目录
一.传输层
传输层是只有主机才有的层次,为应用层提供通信服务,并且能够使用网络层的服务。
传输层的功能:
1.传输层提供进程和进程之间的逻辑通信(网络层提供主机之间的逻辑通信)。
2.复用和分用,复用是指应用层所有的应用进程都可以通过传输层再传输到网络层,分用是指传输层从网络层收到数据后交付指明的应用进程。
如何区分不同的应用进程呢?这就需要用到端口号:
端口(逻辑端口/软件端口)是传输层的SAP,标识主机中的应用进程。
硬件端口和软件端口:硬件端口是一种实际的计算机的连接口,分为串行接口与并行接口,我们平常熟知的USB,SATA和IDE就是串行接口。而软件端口则仅仅是一个标识,标识不同的应用进程。
端口号只有本地意义,在因特网中不同计算机的相同端口是没有联系的。所以端口号只需要在本机内能唯一标识一个进程即可。
端口号长度为16bit,能表示65536个不同的端口号。
端口号按范围分:
非常重要的熟知端口号如下:
补充:套接字
在网络中采用发送方和接收方的套接字组合来识别端点(某个进程),套接字唯一标识了网络中的一个主机和它上面的一个进程。
套接字Socket=:(主机IP地址,端口号)
3.传输层对收到的报文进行差错检测。
4.传输层的两个协议:面向连接的传输控制协议TCP与无连接的用户数据报协议UDP
面向连接的传输控制协议TCP在传送数据之前必须建立连接,数据传送结束后要释放连接。不提供广播或多播服务。由于TCP要提供可靠的面向连接的传输服务,因此不可避免增加了许多开销:确认、流量控制、计时器及连接管理等。
特点:可靠,面向连接,时延大,适用于大文件。
无连接的用户数据报协议UDP传送数据之前不需要建立连接,收到UDP报文后也不需要给出任何确认。
特点:不可靠,无连接,时延小,适用于小文件。
二.UDP协议
UDP只在IP数据报服务之上增加了很少功能,即复用分用和差错检测功能。
1.UDP的特点:
1.UDP是无连接的,减少开销和发送数据之前的时延。
2.UDP使用最大努力交付,即不保证可靠交付。可靠交付由传输层上的应用层保证。
3.UDP是面向报文的,适合一次性传输少量数据的网络应用。面向报文:
应用层的报文会作为应用层的传输单元往下传递,在传输层进行封装(封装上UDP首部)后继续往下传递,在网络层继续封装IP首部形成网络层传输单元。
面向报文就是:应用层给UDP多长的报文,UDP就照样发送,即一次发一个完整报文。所以应用层必须选择合适的大小的报文传递给传输层。
如果应用层报文过大,UDP一次发一个完整的报文给网络层,那么网络层就必须进行分片以满足链路层MTU(最大传送单元)的要求。这样就会降低网络层的效率。如果应用层的报文过小,传递到网络层后,IP首部的相对长度就会较大,这样也会降低网络层的效率。
4.UDP无拥塞控制,适合很多实时应用。
5.UDP首部开销小,8B,而TCP首部开销为20B。
2.UDP的首部格式:
16位的源端口号:源端口号是可有可无的,如果传送某数据需要收到回复,那么添加源端口号,这样对方才能知道将回复发给哪个进程。
16位的目的端口号:目的端口号是一定要有的,因为发送数据到某个主机的某个进程是一定要有指向的。
16位UDP长度:UDP用户数据报的整个长度(首部字段+数据字段)。
16位UDP检验和:检测整个UDP数据报是否有错,错就丢弃。分用时,找不到对应的目的端口号,就丢弃报文,并给发送方发送ICMP“端口不可达”差错报告报文。
3.UDP校验的过程:
UDP 校验和是一个端到端的传输层校验和,是对包含了IP头部中的源(Source)和目的IP地址(Destination Address)字段的 UDP 伪首部计算得到的。
它由初始的发送方计算得到,由最终的目的方校验。它在传输中不会被修改(除非它通过一个NAT)。IPV4 头部中的校验和只覆盖整个头部(即它不覆盖IP分组中的任何数据),它在每个IP跳都要被重新计算(因为IPV4 TTL字段的值在数据报转发时会被路由器减