客户端服务器

深入理解TCP协议及其源代码

丶灬走出姿态 提交于 2020-02-06 11:40:41
深入理解TCP协议及其源代码 本文参考了《TCP/IP协议族》第四版 进程到进程的通信 与UDP一样,TCP也是使用端口号提供进程到进程之间的通信。下表是我们常见的TCP使用的熟知端口号。 端口 协议 说明 7 Echo 把收到的数据报回送到发送方 9 Discard 丢弃收到的任何数据报 11 Users 活跃的用户 20和21 FTP 文件传输协议 23 TELNET 终端网络 25 SMTP 简单邮件传送协议 53 DNS 域名服务器 80 HTTP 超文本传输协议 面向字节流 TCP创造了一个环境使得两个进程之间好像有一个 管道 连接,而中间流动着的,就是 字节流 。在发送进程写入字节流,而在另一端的接收进程则读取字节流。 因为在发送进程和接收进程的读取和写入的速度可能不一样,那么可能存在发送进程发送的太快,而接收进程来不及接收就使得一些数据丢失。那么在这里就设置了TCP缓存。这种协调发送者和接收者之间速度的控制方式也叫做流量控制。在发送方有发送缓存,接收方有接收缓存。 在发送方,缓存有三种类型的槽,白色区域是空槽,也就是可以让发送进程填入数据的地方,深灰色区域保存的是已经发送出去但是没有接收到ACK的字节,发送TCP的缓存中还需要保存这些字节,在必要的时候进行重传。灰色区域表示发送进程即将发送的字节。在深灰色的槽中的字节被确认后,这些位置就可以被回收并且被发送进程再次利用

偷偷告诉你,互联网公司理想的技术架构!

牧云@^-^@ 提交于 2020-02-06 10:12:49
“ 本文探讨了互联网公司的技术架构,涉及 DNS、负载均衡、长连接、API 网关、PUSH 推送、微服务、分布式事务以及相关支撑的基础服务。主要是为了学习,希望可以给大家一个参考。 图片来自 Pexels 整体架构 App、PC 以及第三方等调用方通过传统的域名解析服务 LocalDNS 获取负载均衡器的 IP,App 可以通过 HttpDNS 的方式来实现更实时和灵活精准的域名解析服务。 通过负载均衡器到达统一接入层,统一接入层维护长连接 。 API 网关作为微服务的入口,负责协议转换、请求路由、认证鉴权、流量控制、数据缓存等。 业务 Server 通过 PUSH 推送系统来实现对端的实时推送,如 IM、通知等功能。 业务 Server 之间通过专有的 RPC 协议实现相互调用,并通过 NAT 网关调用外部第三方服务。 域名解析 传统 DNS DNS(Domain Name System)域名系统,一种分布式网络目录服务,用于域名与 IP 地址的相互转换,能够使人更方便的访问互联网,而不用去记住机器的 IP 地址。 DNS 的解析过程如下: 客户端递归查询 LocalDNS(一般是 ISP 互联网服务提供商提供的边缘 DNS 服务器)获取 IP。 LocalDNS 迭代查询获取 IP,即不断的获取域名服务器的地址进行查询。 HttpDNS 移动解析(HttpDNS)基于 Http

C#网络编程(基本概念和操作) - Part.1

删除回忆录丶 提交于 2020-02-06 07:14:42
C#网络编程(基本概念和操作) - Part.1 引言 C#网络编程系列文章计划简单地讲述网络编程方面的基础知识,由于本人在这方面功力有限,所以只能提供一些初步的入门知识,希望能对刚开始学习的朋友提供一些帮助。如果想要更加深入的内容,可以参考相关书籍。 本文是该系列第一篇,主要讲述了基于套接字(Socket)进行网络编程的基本概念,其中包括TCP协议、套接字、聊天程序的三种开发模式,以及两个基本操作:侦听端口、连接远程服务端;第二篇讲述了一个简单的范例:从客户端传输字符串到服务端,服务端接收并打印字符串,将字符串改为大写,然后再将字符串回发到客户端,客户端最后打印传回的字符串;第三篇是第二篇的一个强化,讲述了第二篇中没有解决的一个问题,并使用了异步传输的方式来完成和第二篇同样的功能;第四篇则演示了如何在客户端与服务端之间收发文件;第五篇实现了一个能够在线聊天并进行文件传输的聊天程序,实际上是对前面知识的一个综合应用。 与本文相关的还有一篇文章是: C#编写简单的聊天程序 ,但这个聊天程序不及本系列中的聊天程序功能强大,实现方式也不相同。 网络编程基本概念 1.面向连接的传输协议:TCP 对于TCP协议我不想说太多东西,这属于大学课程,又涉及计算机科学,而我不是“学院派”,对于这部分内容,我觉得作为开发人员,只需要掌握与程序相关的概念就可以了,不需要做太艰深的研究。

从客户端上传图片到服务器

女生的网名这么多〃 提交于 2020-02-06 06:11:06
private bool fileUpLoad() { if (txtFup.HasFile) { string fileContentType = txtFup.PostedFile.ContentType;//获取客户端上传文件的类型 if (fileContentType == "image/gif" || fileContentType == "image/pjpeg")//文件类型如果为gif或者jpg的话,条件为true { string name = txtFup.PostedFile.FileName;//获取客户端文件名 FileInfo file = new FileInfo(name);//对name进行包装,创建file对象 string fileUpName = System.DateTime.Now.ToString("yyyyMMdd") + file.Name; filename = fileUpName; string serverPath = Server.MapPath("upload/images/" + fileUpName);//获取服务器路径 string creatServerPath = "upload/images";//创建服务器路径 if (!File.Exists(serverPath))//判断是否存在文件 { try {

Web开发中的技术Cookie,Session,Token

妖精的绣舞 提交于 2020-02-06 04:48:38
在Web应用中,Http请求是无状态的。即:用户第一次发起请求,与服务器建立连接并登录成功后,为了避免每一次打开页面需要登录,就出现了Cookie和Session技术。 Cookie Cookie是客户端保存用户信息的一种机制,用来记录用户的信息,也是实现Session的一种方式。Cookie存储的数据量有限,都是保存在浏览器中。不同的浏览器有不同的存储大小,但一般不超过4KB。因此Cookie只能存储一小段的文本信息。 例如:登录网站,用户第一天输入用户名和密码进行登录,第二天有可能就直接打开。 Session Session是另一种记录客户状态的机制,它是在服务端保存的数据结构(SessionID和Session内容,还有很多自定义的内容.如:用户基本信息、权限信息等等),这个数据可以保存在持久化数据库、Redis缓存库、文件中,用于跟踪用户的状态。 客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端再次访问时只需要从该Session中查找该用户的状态即可。 用户第一次登录后,浏览器会将用户信息发送给服务器,服务器会给此用户创建一个SessionId,并在相应内容(Cookie)中将该SessionId一起返回给浏览器,浏览器将这些数据保存到客户端本地。当用户再次发起请求时

网络编程--Java网络编程入门

人走茶凉 提交于 2020-02-06 03:04:12
Java 网络编程入门 服务器与客户程序只需关心发送什么样的数据给对方,而不必考虑如何把这些数据传输给对方,传输数据的任务由计算机网络完成。 两个进程顺利通信的前提条件是它们所在的主机都连接到了计算机网络上。 网络协议是网络中主机之间通信的语言。 不同网络之间的互联靠网络上的标准语言—— TCP/IP 协议。 OSI 参考模型把网络分为 7 层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。不同主机之间的相同层称为对等层。 物理层:为上一层提供物理连接,以及规定通信节点之间的机械和电气特性。数据作为原始的比特 (bit) 流传输。 数据链路层:数据链路层负责在两个相邻节点间的线路上,无差错地传送以帧为单位的数据。典型设备是交换机。 网络层:选择合适的网间路由和交换节点,确保数据及时传送到目标主机。典型设备是路由器。 传输层:根据通信子网的特性最佳地利用网络资源,为两个端系统的会话层提供建立、维护和取消传输连接的功能,以可靠方式或不可靠方式传输数据。信息的传送单位是报文。 会话层:管理进程间的会话过程,即负责建立、管理、终止进程间的会话。数据传送单位是报文。 表示层:对上层数据进行转换,以保证一个主机的应用层的数据可以被另一个主机的应用层理解。数据传送单位是报文。 应用层:确定进程间通信的实际用途,以满足用户实际需求。

AIR RIA和Flex!

强颜欢笑 提交于 2020-02-05 16:02:47
今天早上打开电脑,研究Adobe主页发布的CS4试用版时突然发现了叫做AIR的东西。跟群里朋友聊起来,居然有人说是不是NIKE的鞋子,OMG! 下面介绍一下吧! 什么是 Adobe AIR Adobe Integrated Runtime (AIR) 是一个跨操作系统运行的平台,利用现有的Web开发技术(Flash,Flex,HTML,JavaScript,Ajax)来构建富Internet应用程序并部署为桌面应用程序。 AIR 支持现有的Web技术如Flash,Flex,HTML,JavaScript和AJAX,可以用你最熟练的技术来开发您所见过的最具用户体验的RIA程序,例如,一个AIR程序可以使用如下一种或多种组合技术构建: Flash / Flex / ActionScript HTML / JavaScript / CSS / Ajax PDF 可嵌入任何应用程序中 作为结果,AIR 应用程序可以是: 基于Flash 或 Flex:应用程序根内容(理解为容器)为Flash/Flex (SWF) 基于Flash 或 Flex 的HTML 或 PDF。应用程序的根内容为基于Flash/Flex (SWF) 的HTML (HTML, JS, CSS) 或 PDF 基于HTML,应用程序根内容为HTML, JS, CSS 基于HTML的Flash/Flex或PDF

Cookie、Session和Token

不羁的心 提交于 2020-02-05 11:44:04
在Web应用中,HTTP请求是无状态的。即:用户第一次发起请求,与服务器建立连接并登录成功后,为了避免每次打开一个页面都需要登录一下,就出现了cookie,Session。 Cookie Cookie 是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态。Cookie存储的数据量有限,且都是保存在客户端浏览器中。不同的浏览器有不同的存储大小,但一般不超过4KB。因此使用 Cookie 实际上只能存储一小段的文本信息。 例如:登录网站,今天输入用户名密码登录了,第二天再打开很多情况下就直接打开了。这个时候用到的一个机制就是Cookie。 Session Session是另一种记录客户状态的机制,它是在服务端保存的一个数据结构(主要存储的的 SessionID 和 Session内容 ,同时也包含了很多自定义的内容如:用户基础信息、权限信息、用户机构信息、固定变量等),这个数据可以保存在集群、数据库、文件中,用于跟踪用户的状态。 客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是 Session。客户端浏览器再次访问时只需要从该 Session 中查找该客户的状态就可以了。 用户第一次登录后,浏览器会将用户信息发送给服务器

HTTPS原理01 -- SSL/TLS介绍

时光毁灭记忆、已成空白 提交于 2020-02-05 05:20:29
https=http+ssl 顾名思义,https是在http的基础上加上了SSL保护壳,信息的加密过程就是在SSL中完成的 SSL证书的定义:SSL证书是由专门的权威的数字证书颁发机构在验证一个域名的信息之后所发行的数字网络证书,它可以很好地维护网络信息的安全,防止这些信息被第三方所截取或是窃听。 ssl认证指的是客户端到服务器端的认证,它主要是提供对用户以及服务器的认证,对传送的数据进行加密和隐藏,它能够确保数据在传送过程当中不被改变,对于数据的加密性、数据的完整性有一定保障。 https ssl证书颁发后都有一个有效期。有时证书没过期都会出现无效的情况,那可能是电脑系统的时间不对会导致证书过期,因为https ssl证书颁发都有颁发日期和截止日期的。电脑系统当中的时间在证书有效时间之外,就有可能导致浏览器提示网站安全证书过期。 关于SSL证书原理,其实在一个网站部署了SSL证书之后,就相当于为这个网址配置两把密钥,一把叫做公钥,另一把叫做私钥。公钥的作用就是在用户将自己的信息留在这个网站时为这些信息加锁的钥匙,加了锁之后,这些信息就不能被轻易的读取,除非有专门的钥匙打开。而这把打开这个锁的钥匙,就是另一把密钥,也就是私钥。只有这把对应的私钥才可以打开公钥部下的锁,因此在这两把密钥的作用下,可以使客户的信息数据在网站中安全的传入并安全的浏览,不会被他人截取。 一、作用

第二篇:网络基础

被刻印的时光 ゝ 提交于 2020-02-05 01:55:12
OSI参考模型 与 TCP/IP模型 应用层 - >   应用层 表示层 会话层 传输层  ->   传输层 数据链路层 ->  网络接口层 物理层 一般主要考察TCP/IP,因为TCP/IP才是常用的,OSI只是理想上 各层设备及传输单位 物理层:中继器 集线器      单位:bit流 数据链路层:网桥 交换机 网卡   单位:帧 网络层:路由器 三层交换机    单位:包 传输层及以上: 网关        单位: 段 TCP 与 UDP UDP:udp提供数据报服务,面向无连接的,他的数据不保证顺序发送,他的传输速度比较快,并且可以同时建立多个连接,但是容易丢包并且没有应对措施,不安全不可靠,应用于实时性比较强的场合,如流媒体,还有广播 TCP:tcp提供可靠传输,速度比较慢,比UDP多了三次握手的过程,还有他的功能,流量控制,拥塞控制,路由选择,会考虑当前网络环境的好坏,如果网络差,会为了防止丢包而暂缓发送数据,所以会比UDP慢上很多,按顺序发送,但是不一定是按顺序到达 TCP的建立连接与终止( 重中之重 ) TCP建立连接调用函数步骤 1,服务器端调用socket()连接 2,服务器端调用bind()指定服务端口 3,服务器端调用listen()等待监听客户端的到来 4,客户端调用socket()建立连接 5,客户端调用connect()主动连接服务器端,(注意