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、等待报文段从网络中消失,使得旧连接的报文不会在新链接中出现。