[网络]传输层协议

一、TCP/IP协议

1、TCP/IP介绍

2、TCP/IP协议结构

        TCP/IP是一个Protocol Stack,包括TCP、IP、UDP、ICMP等许多协议。

        TCP:应用程序之间通信

        IP:计算机之间的通信

        UDP:应用程序之间的简单通信

        ICMP:ping

        ARP:将ip地址转换成mac地址

3、TCP/IP 分层

        共定义了四层,和 OSI参考模型的分层有对应关系。

[网络]传输层协议_第1张图片

二、TCP

1、TCP的介绍

        是一种面向连接的、可靠的、基于字节流的传输层通信协议。

2、特性

        1.工作在传输层

        2.面向连接协议

        3.全双工协议

        4.半关闭

        5.错误检查

        6.将数据打包成段,排序

        7.确认机制

        8.数据恢复,重传

        9.流量控制,滑动窗口

3、报文段

[网络]传输层协议_第2张图片

        源端口、目标端口:源计算机上的应用程序的端口号,占16位(bit)

        序列号:表示本报文段所发送数据的第一个字节的编号。

        确认号:表示接收方期望收到发送方下一个报文段的第一个字节数据的编号:传输是否有问题?

        数据偏移/首部长度:表示TCP报文段的首部长度,共4位,最大支持60字节。

控制位:

        URG(Urgent):表示本报文段中发送的数据是否包含紧急数据。URG=1 时表示有紧急数据。当 URG=1 时,后面的紧急指针字段才有效。

        ACK:表示前面的确认号字段是否有效。ACK=1 时表示有效。只有当 ACK=1 时,前面的确认号字段才有效。TCP 规定,连接建立后,ACK 必须为 1。

        PSH(Push):告诉对方收到该报文段后是否立即把数据推送给上层。如果值为 1,表示应当立即把数据提交给上层,而不是缓存起来。

        RST:表示是否重置连接。如果 RST=1,说明 TCP 连接出现了严重错误(如主机崩溃),必须释放连接,然后再重新建立连接。

        SYN:在建立连接时使用,用来同步序号。

        FIN:标记数据是否发送完毕。如果 FIN=1,表示数据已经发送完成,可以释放连接。

        窗口大小:TCP流量控制,表示目前还有多少空间

        校验和:提供额外的可靠性紧急指针:标记紧急数据在数据字段中的位置

        可选项部分:其最大长度可根据TCP首部长度进行推算。TCP首部长度用4位表示,选项部分最长为:(2^4-1)*4-20=40字节

4、tcp3次握手

[网络]传输层协议_第3张图片

        过程:PC1想和PC2建立连接,PC1会发送syn=1(同步位),序号为随机数X的报文给PC2,PC2收到PC1的报文会回复一个syn+ack报文给PC1,该报文序号为随机生成的y,确定号为x+1(ack=x+1),syn(同步位)=1,ack(确认位)=1.PC1收到PC2同意建立连接的报文,会回复一个ACK报文,该报文序号为x+1,确认号为y+1 ack(确认位)=1,这样PC1和PC2就建立连接了。

        第一次握手客户端将标志位SYN设置为1,随机产生一个Seq=x,向服务端发送请求连接。此时客户端处于同步已发送状态(SYN-SEND),等待服务端响应。
        第二次握手:服务端收到请求之后,由标志位SYN知道客户端请求建立连接。服务端将标志位SYN和ACK都置为1,随机产生一个Seq=y,Ack=x+1,再发送数据包给客户端以确认连接请求,此时服务端处于同步已接收状态(SYN-RCVD)。
        第三次握手:客户端收到请求之后,检查ACK是否为1,Ack是否为x+1,如果是则将标志位ACK置为1,Ack=y+1,并将该数据包发送给服务器,服务器检查ACK是否为1,并且Ack是否为y+1,如果正确则建立连接成功。客户端和服务端进入连接已建立状态(ESTABLISHED),可以进行数据传输。

三、四次挥手

[网络]传输层协议_第4张图片

        由于TCP连接是全双工的。因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,(客户端)发送一个FIN来终止这一方向的连接,(服务端)收到一个FIN只是意味着(客户端)这一方向上没有数据流动了,即(客户端)不会再收到数据,但是在这个TCP连接上(服务端)仍然能够发送数据,直到(服务端)这一方向也发送了FIN。
首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭。

        第一次挥手:客户端发送一个FIN/ACK报文,用来关闭客户端到服务端的数据传送,客户端进入终止等待1(FIN_WAIT_1)状态。
        第二次挥手:服务端收到FIN后,发送一个ACK报文给客户端,确认序号Ack为收到序号+1(与SYN相同,一个FIN占用一个序号),服务端进入关闭等待(CLOSE_WAIT)状态。
        第三次挥手:服务端发送一个FIN+ACK报文,用来关闭服务端到客户端的数据传送,服务端进入最后确认(LAST_ACK)状态。
        第四次挥手:客户端收到FIN后,客户端进入时间等待(TIME_WAIT)状态,接着发送一个ACK给服务端,确认序号为收到序号+1,服务端进入关闭(CLOSED)状态,完成四次挥手。

四、UDP协议

1.UDP介绍

        UDP协议是无连接、不保证可靠性的传输层协议。发送端不关心发送的数据是否到达目标主机、数据是否出错等,收到数据的主机也不会告诉发送方是否收到了数据,它的可靠性由上层协议来保障。传输数据速度更快,效率更高。

2.特性

        工作在传输层、提供不可靠的网络访问、非面向连接协议、有限的错误检查、传输性能高、无数据恢复特性。

你可能感兴趣的:(网络)