- 传输层协议为运行在不同的Host进程提供了一种逻辑通信机制。
- 位于网路层之上
- 依赖于网络层
- 对网络层进行增强
传输层协议
TCP:拥塞控制,流量控制,连接建立
UDP:基本基于网络层的服务。
计算机网络传输层的功能:多路复用 多路分用
多路复用:
从多个·Socket接收数据,为每个数据封装上头部信息,生成Segment,交给网络层。
多路分用:
传输层依据头部信息将收到的Segment交给正确的Socket,即不同的进程。
基本过程:
主机接收到IP数据报。
1每个数据报中含有源IP地址,目的IP地址。
2.每个数据报中携带一个传输层的段
3.每个段携带源端口号和目的端口号。
主机接收到Segment之后,传输层协议提取IP地址和端口号,将Segment导入到相应的Socket
TCP可靠数据传输
- 可靠的含义:不错,不乱,不丢。
- 可靠信息的传送控制信息是双向的,就是网络层需要和运输层一起实现。
TCP的传输连接管理
传输连接有三个阶段:连接建立,数据传输和链接释放。TCP连接采用的是客户服务器方式。
主动发起连接建立的应用是客户
等待连接建立起来的是服务器。
连接过程:
服务器主动打开,进入Listen状态。
客户端:发送一个数据包,(同步标记)SYN=1,确认标记ACK=0,自身序列seq=x.进入SYN—SEND状态服务器:SYN=1,ACK=1, 自身序列号seq=y,确认号ack=x+1。进入到SYN-RCVD状态,client收到数据包后进入到ESTAB-LISHED状态。
客户端:ACK=1 seq=x+1,ack=y+1,服务器收到数据包后进入到ESTAB-LISHED状态。
注意:SYN是同步标记,请求建立连接的时候使用
ACK是确认标记
ack是确认号,表示希望下一次收到数据的标号。
seq是自身数据的序列号。
为什么是三次连接:
<计算机网络>
1.前两次连接已经足够保证网络畅通。
2.防止服务器的资源浪费:
假设第一次client端发送了一个请求报文段1,但是在网络中延时过久。
此时client端重新发送一个请求报文段2,很快到达serve端,并回应。此时建立起来连接
后到的请求报文段到达server端,此时serve端做出回应,等待数据的传送,但是client不会传送数据,此时就造成了服务器资源的浪得。
- 另一种解释
两次握手并不能保证数据通道的建立,因为是全双工通信,通信双发都必须接到对方的告知,告诉信道完整。
- SYN攻击:大量假地址发起请求回话连接,使得serve端处于SYN—RECV状态。
- 连接释放:
- 数据传输结束后,通信双方都可以释放连接。
- 假设A释放连接,A把连接连接释放报文段首部FIN=1,其序号为seq=u,请求B的确认。此时A进入FIN-WAIT-1状态。
- B接收到释放报文段后,发送数据报ACK=1,seq=v,ack=u+1,进入到CLOSE-WAIT状态,A收到报文段后进入到FIN-WAIT-2状态
- B此时发送一个链接释放的报文段,FIN=1,ACK=1,seq=w,ack=u+1,进入到LAST-ACK状态
- A接收到报文段后,发送一个ACK=1,seq=u+1,ack=w+1的报文,进入到TIME-WAIT状态,过一会自动进入close转态(2MSL),确保服务器可以正常关闭。
- B收到后直接进入close状态