图解TCP/IP 学习笔记(六) TCP与UDP
文章目录
传输层的作用
传输层定义
IP首部有一个协议字段,标识IP的上一层采用的是什么传输层协议。
一个程序可以使用多个端口,根据端口号就可以识别在传输层上一层的应用层中所要进行处理的具体程序。
通信处理
TCP/IP众多应用协议大多以客户端/服务端的形式运行。
服务端程序在UNIX系统当中叫做守护进程。HTTP的httpd(目标端口80),ssh的sshd(目标端口22)。UNIX中不需要将这些守护程序诸葛启动,而是启动一个可以代表他们接收客户端请求断inetd,这是一种超级守护进程。
两种传输层协议TCP/UDP
TCP
面向连接、可靠的流协议。流是指不间断的数据结构。为提供可靠传输,实行顺序控制or重发机制,还具备流控制、拥塞控制,提高网络利用率等功能
UDP
不具有可靠性的数据报协议。可以确保发送消息的大小,却不能确定一定能到达。
注:TCP,发10次100字节的消息,接收端,应用程序可能会受到1k字节的消息。发端需要额外在消息中设置一个表示长度或间隔的字段信息。UDP,发送一个100字节的消息,收端为100字节。
TCP与UDP区分
UDP主要用于对高速传输和实时性要求较高的通信或广播通信。RIP DHCP等基于广播的协议依赖于UDP
端口号
端口号用来识别同一台计算机中进行通信的不同应用程序,也叫做程序地址。
通过IP地址、端口号、协议号进行通信识别
TCP/IP或UPD/IP通信中采用5个信息来识别一个通信。源IP,目标IP,协议号,源端口号,目标端口好。
端口号如何确定
-
标准既定的端口号
静态方法。每个应用程序都有其指定的端口号。如HTTP TELNET FTP等应用协议使用的是固定端口号,也称作知名端口号,一般由0-1023数字分配。
-
时序分配法
动态分配。此时服务端有必要监听端口号,但是接受服务的客户端没必要确定端口号,全权交给OS分配就可以。49152-65535之间
端口号与协议
端口号由其使用的传输层协议决定,不同的传输协议可以使用相同的端口号。
HTTP通信必须使用TCP,因此UDP的80端口并未投入使用。
UDP
User Datagram Protocol
不提供复杂的机制,利用IP提供面向无连接的通信服务。
-
包总量较少的通信 DNS SNMP
-
视频、音频等多媒体通信(即时通信)
-
限定于LAN等特定网络中的应用通信
-
广播通信(广播、多播)
UDP的user不单指用户,也表示程序员。
TCP
对传输、发送、通信进行控制的协议
只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。
连接 各种设备、线路,或网络中进行通信的两个应用程序为了相互传递消息而专有的、虚拟的通信线路,也叫做虚拟电路。TCP则负责控制连接的建立、断开、保持等管理工作。
TCP的特点及其目的
TCP通过检验和、***、ACK、重发控制、连接管理、窗口控制等机制实现可靠性传输
通过***与确认应答ACK提高可靠性
确认应答处理、重发机制、重复控制等功能都可以通过***实现,***初始值不是0,是建立连接后随机数生成。
数据被重发之后如果还收不到确认应答则再次发送,等待确认应答的时间将会以2倍、4倍的指数函数延长。
TCP以段为单位发送数据
MSS 最大消息长度,最理想的情况是,MSS正好是IP中不会被分片处理的最大数据长度。
TCP传送大量数据时,是以MSS的大小将数据进行分割发送,重发时也是以MSS为单位。
MSS是在三次握手的时候,两端主机之间被计算得出。两端主机发出建立连接的请求时,会在TCP首部中写入MSS选项,告诉对方自己的接口能适应的MSS大小,然后在两者之间选择一个较小的投入使用。
利用窗口控制提高速度
TCP每发一个段进行一次确认应答的处理。包的往返时间越长通信性能越低(网络吞吐量越差)。
为了解决这个问题,引入了窗口这个概念。
发送端主机发送了一个段之后不必要一直等待确认应答而是继续发送。窗口大小就是指无需等待确认应答而可以继续发送数据的最大值。
使用了大量的Buffer。
滑动窗口以外的部分:尚未发送的数据,已经确认对端收到的数据。
滑动窗口机制:
窗口控制与重发控制
使用窗口控制,某些确认应答即便丢失也无需重发。这个时候接收端主机收到的序号不连续,并不会将数据丢弃而是暂存在buffer。
快速重传机制:
流控制
TCP首部中有一个字段来通知窗口大小,字段的值越大说明网络的吞吐量越高。发送端主机会根据接收端主机的指示对发送数据的量进行控制。
比如buffer满了之后,收端得暂时停止接收数据,之后发送端主机会时不时发送一个窗口探测的数据段。仅含一个字节以获取最新的窗口大小信息。
拥塞控制
通信一开始使用慢启动算法对发送数据量进行控制
提高网络利用率的规范
-
Nagle算法
发送端还有较少的数据要发送,进行延迟发送。
仅在以下任意一种条件下才能发送数据:- 已发送的数据都已经收到确认应答
- 可以发送MSS的数据时
-
延迟确认应答
不必为每一个数据段都立即进行确认应答。TCP采用滑动窗口的控制机制,每两个数据段返回一次也可以。
-
捎带应答
PiggyBack Acknowledgement TCP的确认应答和回执数据可以通过一个包发送。可以使收发的数据量减少。
其他传输层协议
UDP-Lite
轻量级用户数据报协议。
SCTP
流控制传输协议。
以消息为单位收发。
主要用于进行通信的应用之间发送众多较小消息的情况。Chunk 数据块,多个数据块组成一个数据包。
DCCP
数据报拥塞控制协议 在建立和断开连接上具有可靠性,能够根据网络拥堵情况进行拥塞控制。