UDP

udp是无连接的,即发送数据前不需要建立连接。

udp使用最大努力交付,即不保证可靠交付。

udp是面向报文的。应用层的报文下发后既不合并,也不拆分,由应用层控制报文长度。

udp没有拥塞控制,适用于实时性高的情景。

udp支持一对一,一对多,多对一,多对多的交互通信。

upd首部开销小。

 

TCP
tcp是面向连接的应用层协议。

tcp连接是一对一的。

tcp提供可靠交付的服务。无差错(CRC校验),不丢失(丢包重传),不重复,按序到达。

tcp提供全双工通信。

tcp是面向字节流的。tcp把数据看做是无结构的字节流来处理。tcp不保证发送方和接收方的数据块具有对应的大小关系,但保证接收方接受到的字节流和发送方发出的字节流是完全一样的。

 

udp、tcp比较:

udp无连接,tcp有链接。udp尽最大努力交付,tcp保证可靠交付。udp面向报文,tcp面向字节流。udp支持一对一、一对多、多对多、多对一,tcp支持一对一。udp没有拥塞控制,适合实时性高的情景,tcp提供拥塞控制。

 

OSI 七层协议

1、物理层:传输比特位(0,1),可以是电缆、光缆、无线通信等。

2、数据链路层:传输帧。每一帧包括数据和必要控制信息。

3、网络层:选择合适路由,传输ip数据报

4,、运输层:为进程间通信提供的通用的数据传输服务。运输层复用:多个应用层进程同时使用下面的运输层服务。运输层分用:运输层把受到的信息分别交付上面应用层中的相应进程。

5、应用层:实现进程间的通信和交互。应用层交互的数据单元叫做报文。

 

TCP三次握手:

tcp 客户端和服务器端是不对等的。客户端主动打开连接,服务器被动打开链接。

1、client发送请求连接报文,进入syn-sent同步已发送状态。

2、server收到请求报文,发送确认。进入syn-rcvd同步收到。

3,、client收到确认,进入established已建立连接。发送确认报文。

4,、server收到确认,进入established已建立连接。

 

第三次握手保证服务器不会因为无效请求而建立连接。

 

TCP四次挥手:

1、A发送连接释放报文,停止写数据,从established进入fin-wait-1终止等待1状态。

2、B发送确认,进入close-wait关闭等待状态。此时,tcp连接处于半关闭状态。B到A方向的链接未关闭。

3、A收到确认后进入fin-wait-2,等待B发送连接释放报文。

4、B发送连接释放报文,停止写入数据。进入last-ack

5、A发送确认,进入time-wait,2msl后关闭。  MSL最长报文段寿命

6、B收到确认,关闭连接

 

time-wait等待2msl的意义:

1、可以通过重传确认来避免最后一个ack丢失。

2、等待报文段从网络中消失,使得旧连接的报文不会在新链接中出现。