运输层协议TCP—UDP

运输层向他上面的应用层提供通信服务。属于面向通信部分的最高层,同时也是用户功能中的最低层。通信的真正端点是主机中的进程而非主机。
网络层提供端到端的逻辑通信,运输层提供应用进程之间的逻辑通信。
运输层还要对接收的报文进行差错检测。在网络层中,IP数据报中的检验和字段,只检查首部而不检查数据部分。

运输层-进程之间的通信。
网络层-端到端通信,也即主机间的通信。


端口
软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址。
端口只具有本地意义。标记的是本计算机应用层的各个进程与运输层交互时使用的层间接口。在互联网中不同的计算机中,相同的端口没有关联。(区别于IP地址的全局意义)
端口号:16位,2B 。提供了65535个不同的端口号
1. 0~49151 服务器使用的端口号。又分为熟知端口号和登记端口号。**熟知端口号(系统端口号)**0~1023.如:FTP-23、TELNET-23、SMTP-25、DNS-53、TFTP-69、HTTPS-443。登记端口号,1024~49151,为没有熟知端口号的应用程序使用。
2. 49152~65535 客户端使用端口号。仅在客户进程运行时才动态选择,因此又叫做短暂端口号。


运输层的两个主要协议 TCP和UDP
TCP(Transmission Control Protocol)传输控制协议
UDP(User Datagram Protocol)用户数据报协议
使用场景:
TCP:下载应用程序。
UDP:要求主机以恒定的速率发送数据。允许网络阻塞时丢失部分数据,但不允许数据有较大的实时延。实时应用(如IP电话,实时视频会议等)


UDP:无连接、尽最大努力交付,面向报文,无拥塞控制
运输层协议TCP—UDP
1.无连接。发送数据时不需建立连接。减少了开销和发送数据的时延
2.尽最大努力交付。不保证可靠交付,因此主机不需要维持复杂的连接状态表。
3. 面向报文。发送方的UDP对应用层交下来的报文,添加UDP首部之后就交付给网络层。应用层给UDP多长的报文,UDP照样发送,即一次发送一个报文。因此应用程序必须选择合适大小的报文。报文太长,到网络层会拆分报文降低IP层效率。报文太短,IP数据报的首部长度太大,降低IP层效率。
4. UDP无拥塞控制。网络出现阻塞时不会使源主机的发送效率降低、允许丢失一些数据,但不允许有较大时延。
5. 支持一对一、一对多、多对一和多对多的交互通信。
6. UDP首部开销小。只有8B。UDP的检验和把首部和数据一起检验。(IP校验和检验首部,不检验数据)
运输层协议TCP—UDP


TCP:面向连接、点对点、可靠服务、全双工通信。面向字节流。
1. 面向连接。应用层在使用TCP协议之前,会建立TCP连接(三次握手)
2. 点对点。每一条TCP连接只能连两个端点(这个端点不是主机IP地址,不是应用进程,不是端口,连接的是套接字(又称插口)),因此点对点服务。
套接字socket=(IP地址:端口号)
每一条TCP连接唯一的呗通信两端的两个端点(即两个套接字)所确定,即:
TCP连接 ::={socket1,socket2}={(IP1:port1),(IP2:port2)}
3. 可靠服务。通过TCP连接传送的数据,无差错、不丢失,不重复、按序到达。
4. 全双工通信。TCP允许通信双方的应用进程在任何时候都能发送数据。TCP连接的两端都设有发送缓存和接受缓存,用来临时存放双方通信的数据。
5. 面向字节流。“流”-流入到进程或从进程流出的字节序列。虽然应用程序和TCP交互是一次一个数据块(大小不等)。但TCP把应用程序交下来的数据看成一串无结构的字节流 。收到10个数据块,但可能只交付3.5个数据块 。