2.1 概述
1) UDP是一个简单、不可靠的数据报协议;
2) TCP是一个复杂、可靠的字节流协议;
2.2 总图
1) IPv4: 32位地址(4X8)
2) IPv6:128位地址(8X16)
3) TCP:传输控制协议; 面向连接、全双工字节流、可靠。TCP 套接字是一种流套接字(SOCK_STREAM), TCP 关心确认、超时、重传等细节以保证数据传输的可靠性;——stream socket;
4) UDP: 用户数据报协议;无连接协议。UDP套接字是一种数据报套接字(SOCK_DGRAM);——datagram socket;
2.3 用户数据报协议(UDP)
1) 应用进程往一个UDP套接字中写入一个消息,这个消息会被封装成UDP数据报,该UDP数据报接着被封装为IP数据报,然后发生到目的地;
2) UDP是不可靠的,不保证数据到达目的地;
3) UDP数据报有一个长度,这个长度随数据一起传递给接收端应用进程;TCP是一个字节流协议, 没有长度、边界;
4) UDP是无连接到, UDP客户与UDP服务之间并不存在长期的连接;一个UDP客户可以创建一个套接字,使用这个公共的套接字将数据发送给多个服务器; 一个UDP服务器可以创建一个套接字,使用这个公共的套接字将数据发送给多个客户;
2.4 传输控制协议 TCP
1) 首先, TCP 先在客户和服务器之间建立连接;然后进行数据传输;最后终止这个连接;
2) TCP 提供可靠的数据传输, TC 发送数据后要求对端给一个确认, 如果没有收到确认, TCP 就自动重传数据并等待更长的时间;数次重传失败后, TCP 才放弃传输(4-10 分钟);
TCP 中的RTT算法动态估算客户和服务器之间的往返时间,以知道发送端等待一个接收端的确认需要多久时间;
3) TCP 对数据分配序号进行排序, 以保证传输可靠性;TCP 将数据分节, 分节是TCP传递给IP层的数据单元;数据在发送端被分解成分节传给IP, 在接收端IP将分节传给TCP协议,组合成原数据;
4) TC P提供流量控制, TCP 总是需要告知在任何时刻它一次能够从对端接受多少字节的数据,即通告窗口;通告窗口指出接收缓冲区当前的可用空间,保证发送端发送的数据不会在接收端溢出;通告窗口动态变化, 接收到数据时候,通告窗口减小;应用程序从TCP缓冲区读取数据时候, 通告窗口变大;当TCP对应的某个套接字的接受缓冲区已满, 此时TCP的就必须等待应用程序从该TCP缓冲区读取数据,才能从对端再接受数据;
5