学习笔记19-TCP创建和释放链接的过程

TCP/IP协议

在世界上,各类各样的电脑运行着各自不一样的操做系统,就像世界各地的人们说着不一样的语言,他们不能直接沟通交流,因此须要制定一系列的规则来帮助他们互相理解交流,而后才能将世界链接起来。
一样,要创建一个计算机网络,也须要这样一系列的规则,这就是TCP/IP协议。
计算机网络模型
其中传输层主要有两个协议:
TCP(Transmission Control Protocol 传输控制协议)和UDP(User Data Protocol 用户数据报协议)
TCP是面向链接的协议。
也就是说,在数据传输前,双方必须创建一个可靠的链接。
UDP是非链接的协议。
传输数据以前,源端和终端不创建链接。
UDP协议,当源端想要传送数据时,就简单地去抓取应用程序的数据,而后尽量快地把它扔到网络上。也就是说传送数据仅仅受应用程序生成数据的速度,计算机的能力和传输带宽的限制。
在终端,UDP把每一个消息段放到队列中,应用程序本身去读消息队列。web

常见的基于TCP的应用层协议有:
Telnet(Teletype over the Network) 远程登陆
FTP(File Transfer Protocol) 文件传输协议
SMTP(Simple Mail Transfer Protocol) 简单邮件传输协议 用来发送电子邮件
POP3(Post Office Protocol 3)邮件读取协议 用来接收电子邮件
HTTP(Hyper Text Transfer Protocol)超文本传输协议
HTTPS(Hyper Text Transfer Protocol Secure)安全超文本传输协议安全

常见的基于UDP的应用层协议有:
NFS(Network File System)网络文件系统
TFTP(Trivial File Transfer Protocol)简单文件传输协议
SNMP(Simple Network Management Protocol) 简单网络管理协议 用于网络信息的收集和网络管理
DHCP(Dynamic Host Configuration Protocol)动态主机配置协议
NTP(Network Time Protocol) 网络时间协议 用于网络同步
BOOTP(Boot Protocol)启动协议 用于无盘设备服务器

常见的基于TCP和UDP的有:
DNS(Domain Name Service) 域名服务 用于完成地址查找,邮件转发等工做
ECHO(Echo Protocol) 回绕协议 用于查错及测量应答时间网络

关于比较常见的HTTP协议,有两种:长链接和短链接
短链接:指通讯双方有数据交互时,就创建一个链接,数据发送完,则断开链接
长链接:指每次操做完以后不断开链接,下次就能够直接发送数据包了,不用再创建链接。
固然长链接不能无限期的维持,会有一个超时时间,超过这个时间,服务器会告诉客户端链接过时。tcp

TCP

其中TCP为应用进程提供可靠交付的,全双工的通讯,也就是保证通讯的数据不会丢失或者错乱,且通讯双方能够发送和接收数据。
TCP
从图中能够看到,发送方给要发送的数据加上了一个TCP首部,构成一个完整的TCP报文,这个首部的格式以下:
TCP报文
其中有几个关键位置比较重要,首先是ACK位,只有当ACK=1时确认号字段才有效,表示响应请求。而后是SYN位,当SYN=1时表示这是一个链接创建请求或者链接接受报文。最后是FIN位,当FIN=1时表示发送完毕,要求释放链接。
下面进入正题:svg

TCP的三次握手和四次挥手

TCP创建链接的过程能够归纳为三次握手:
第一次握手:主机A发送位码为SYN=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求创建联机;
第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),SYN=1,ACK=1,随机产生seq=7654321的包;
第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ACK是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ACK=1,主机B收到后确认seq值与ack=1则链接创建成功。
完成三次握手,主机A与主机B开始传送数据。
TCP释放链接的过程能够归纳为四次挥手:
(1)客户端C发送一个FIN,用来关闭客户A到服务器B的数据传送。
(2)服务器S收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。而后服务器S向上一层确认是否能够关闭链接。
(3)服务器S跟上层确认关闭与客户端C的链接后,发送一个FIN给客户端C。
(4)客户端C发回ACK报文确认,确认序号设置为收到的序号加1。
TCP创建和释放链接操作系统