HCIA05-传输层
一、传输层概述
传输层定义了主机应用之间端到端的连通性。传输层中最常见的两个协议分别是传输控制协议TCP(Transmission Control Protocol)和用户数据包协议UDP(User Datagram Protocol)。
传输层提供端到端的连接(会话之间)
网络层提供点到点的连接(节点之间)
二、端口(Port)
根据不同的端口可以区分不同的协议。


端口是根据需求自行更改的
可以通过更改端口可以让非信任用户访问不到应用
如FTP的端口默认为21,修改端口为9999,让非信任用户访问不到FTP服务器

三、传输层协议概述
| 协议 | 备注 |
|
TCP
|
Transmission control protocol 传输控制协议
可靠的、面向连接的协议
传输效率低,类似于打电话
|
|
UDP
|
User datagram protocol 用户数据报协议
不可靠、无连接的服务
传输效率高,类似于群聊
|



四、TCP协议

TCP协议建立三次握手
每次建立TCP连接都必然且至少会有三个数据包与之相关。
涉及标志位SYN,ACK

第一次握手:客户端发送SYN同步位标志和序列号给服务端并且进入SYN_SENT状态(序列号的值随机,公式表示为seq=j)

第二次握手:服务端收到后回复一组ACK确认位标志和确认号表示收到连接建立请求(确认号的值为序列号+1,公式表示为ack=j+1),同时发送一组SYN同步位标志和序列号给客户端并进入SYN_RECV状态(序列号同样随机,公式表示为seq=k,此时的标志位ctl=syn,ack)

第三次握手:客户端收到SYN+ACK数据包,同时发送确认包给服务端,此时双方进入established状态,连接建立(ack=k+1,ctl=ack)。

TCP会话的确认
TCP数据包中只有第一个包没有确认号。
通过一个数据包的seq和data大小能确认下一个包的ack,同样通过下一个包的确认号就能确认一个数据包的大小。

如图所示,假设第一次握手seq=1,数据大小是9字节。
第二次握手的ack=10,这个ack有两层含义:一是第一次握手的seq+data=10,二是告诉客户端第三次握手seq希望是10。
第三次握手seq=10,ack=21,其含义与第二次握手一致。
TCP会话的拥塞和流量控制
根据窗口机制来控制网络拥塞(网络拥塞,主机接收服务器的数据不过来,服务器接收主机的请求不过来,可以根据窗口大小来调整)

win的通俗含义其实就是告诉对方一次可发送的最多数据包数,比如win=3就是最多一次三个数据包,但是最多不是一定发满这个数值,可能在它之下。
假如发送速度比处理速度快时,服务器会及时调整窗口数,比如图中的win=1的确认包。
TCP会话断开四次挥手
涉及ack,fin

第一次挥手:A数据传输完毕需要断开连接,A的应用进程向其TCP发出连接释放报文段(FIN = 1,序号seq = u),并停止再发送数据,主动关闭TCP连接,进入FIN-WAIT-1状态,等待B的确认。
第二次挥手:B收到连接释放报文段后即发出确认报文段(ACK=1,确认号ack=u+1,序号seq=v),B进入CLOSE-WAIT关闭等待状态,此时的TCP处于半关闭状态,A到B的连接释放。而A收到B的确认后,进入FIN-WAIT-2状态,等待B发出的连接释放报文段。
第三次挥手:当B数据传输完毕后,B发出连接释放报文段(FIN = 1,ACK = 1,序号seq = w,确认号ack=u+1),B进入LAST-ACK(最后确认)状态,等待A 的最后确认。
第四次挥手:A收到B的连接释放报文段后,对此发出确认报文段(ACK = 1,seq=u+1,ack=w+1),A进入TIME-WAIT(时间等待)状态。此时TCP未释放掉,需要经过时间等待计时器设置的时间2MSL后,A才进入CLOSE状态。
为什么A在TIME-WAIT状态必须等待2MSL(最大报文生存时间)的时间?
1.保证A发送的最后一个ACK报文段能够到达B,保证A、B正常进入CLOSED状态。
这个ACK报文段有可能丢失,使得处于LAST-ACK状态的B收不到对已发送的FIN+ACK报文段的确认,B超时重传FIN+ACK报文段,A能2MSL时间内收到这个重传的FIN+ACK报文段,接着A重传一次确认,同时重启2MSL计数器,2MSL时间后A和B进入CLOSE状态,如果A在TIME-WAIT状态时接收到B的FIN+ACK报文段之后向B发出确认报文段,而不再确认B是否收到立即进入CLOSED状态,如若B并没有正常收到A 的确认报文段,则B无法正正常进入到CLOSED状态。
2.防止“已经失效的连接请求报文段”出现在本连接中。
A在发送完最后一个ACK报文段并经过2MSL,会使本次连接持续时间内所有产生的报文段消失,保证在下一次新连接中不会出现旧连接遗留的请求报文段。
PS:四次挥手原理与三次握手几乎相同,但注意建立连接一定且至少有三次握手包,但是断开连接不一定是四次握手包(比如直接拔电源)。
五、UDP协议
用户数据报协议


六、TCP与UDP的对比
|
传输控制协议TCP
|
用户数据报协议UDP
|
|
面向连接
|
无连接
|
|
可靠传输
|
尽力而为的传输
|
|
支持流控及窗口机制
|
无流控及窗口机制
|
|
仅支持点对点通信
|
支持任意通信方式(点对点,点对多点)
|
|
多用于注重数据的完整性
|
不要求数据的完整性,开销小
|

浙公网安备 33010602011771号