1、传输层的协议及特点

TCP:面向连接(三次握手来建立连接),可靠,开销比较大

UDP:无连接,不可靠,传送数据的速度快

2、传输层的封装类型

TCP和UDP协议_UDP

TCP和UDP协议_TCP_02

3、常见的端口号

在C:\Windows\System32\drivers\etc\services文件里有一些常见服务的端口号

FTP:TCP 21 和 20

Telnet: TCP 23

HTTP: TCP 80

SSH: TCP 22

4、TCP连接的建立和解除

TCP和UDP协议_UDP_03

三次握手:建立连接

1、Client发送同步号(SYN)里有序列号(a)

2、Server收到了序列号以后,给Client回复自己的序列号(b),ACK=a+1

3、Client发送ACK=b+1给Server

四次挥手:解除连接

TCP和UDP协议_UDP_04

1、通信双方建立完连接后,都处于 ESTABLISHED 状态

2、客户端向服务器提出断开连接的请求FIN(调用close方法),此时客户端的状态变为 FIN_WAIT_1 。

3、服务器收到客户端发来的断开请求后,会立马做出响应(ACK),此时服务器变为 CLOSE_WAIT状态,而客户端收到服务器对结束报文段的确认,则进入FIN_WAIT_2,开始等待服务器的结束报文段; 服务器进入CLOSE_WAIT后说明服务器准备关闭连接(但是需要处理完之前的未处理的数据),当服务器调用close方法真正准备关闭连接时,会向客户端发送FIN,这时服务器进入 LAST_ACK状态(等待最后一个ACK到来)。

4、当客户端收到服务器发来的第三次挥手的时候,会向服务器发送最后一个响应报文,此时客户端进入TIME_WAIT状态。tip:上述客户端并没有立马进入close状态的原因是;对服务器发出FIN请求做出回应的ACK可能会出现丢失,所以这里先进入TIME_WAIT状态,如果出现丢包的情况,需要重传操作。

5、当服务器收到来自客户端的ACK(对自己提出FIN请求的回应)后,就会彻底关闭变为CLOSED状态。

5、滑动窗口的概念

是不是发送1bit数据,就要做一次三次握手?

不是,可以一次发多个bit

例如Client发送100bit数据给Server,但是Server只收到了50bit的数据,说明了Client和Server之间的网络出现了拥塞(卡,丢包)

滑动窗口:做流量的控制