1.实现应用进程之间的逻辑通信
1.1传输层和网络层都是负责传送数据的,他们之间有什么区别?为什么传送数据要分两层实现?
在计算机网络协议栈中,运输层恰好位于网络层之上,两者协同完成数据传输任务。 网络层负责实现主机之间的逻辑通信(如同邮政服务将信件从城市A送到城市B); 运输层则进一步提供运行在不同主机上的应用进程之间的逻辑通信(如同快递派送员 派送快递)。

1.2传输层和网络层本质区别
-
网络层(快递公司):提供主机之间的通信服务,就像顺丰将包裹从北京运到上海
-
运输层(派件员):提供进程间的通信服务,确保每户都能收到对应的信件
注:
由此可以看出运输层有两个关键特性
**1.****端到端处理:**运输层协议仅在端系统(如手机、小米服务器)中运行,不参与中间节点的处理。就像顺丰的网点员工只负责收集和派送,而不会在物流中心拆开包裹检查信件。
**2.****服务解耦:**运输层提供的服务模型独立于网络层。如果快递公司更换了配送员(如菜鸟驿站取代顺丰网点),只要服务标准(如配送时间、可靠性)保持一致,用户无需感知底层变化。
2.复用和分用功能
运输层的核心功能:多路复用**/**多路分解 (实现这个功能的核心机制就是socket或者说端口)
类似快递网点同时处理多个用户的包裹,运输层通过端口号区分不同应用的数据。 例如,手机同时运行微信(端口8080)和支付宝(端口80),运输层能准确将数据分发到对应应用。 他的工作流程大家应该也比较熟悉了: 当快递车(网络层数据报)抵达分拣中心(主机),分拣机器人(运输层协议)扫描包裹上的二维码(端口号),将来自不同商家(应用进程)的包裹分类存放,待收件人(目的进程)签收时准确交付。
常见的应用端口有: 80/443端口:专门处理网页浏览(HTTP/HTTPS) 25端口:企业邮箱专用通道(SMTP) 6881-6889端口:迅雷下载的专属通道
2.1多路复用
多路复用的过程就像快递公司的分拣系统。当网络层将来自互联网的数据包(如TCP/UDP报文段)传递给运输层时,运输层需要根据数据包中的特定信息,将数据精确地分发到目标主机上运行的不同应用程序。这个分发过程的关键在于套接字(Socket)机制 。每个网络应用在建立连接时都会获得一个唯一的"门牌号",即套接字标识符。在运输层协议中,这个标识符由三部分组成:源IP地址、目的IP地址和端口号。 以腾讯会议为例,当我们发起视频会议时,系统会自动分配一个临时端口(如50001),这个端口号就像会议室的编号,确保所有视频流数据都准确送达该会议的处理模块。
2.2多路分解
当我们的电脑收到包含淘宝服务器响应的报文段时,运输层会解析报文段头部的源端口号和目的端口号。例如,如果发现目的端口号是65432(即最初请求时使用的本地端口),就会将数据转发到淘宝App对应的套接字。
2.3UDP和TCP其中涵盖的字段
在TCP/IP协议栈中,多路分解具体通过以下字段实现:
源IP地址:标识发送方主机
源端口号:标识发送方的通信端口
目的IP地址:标识目标主机
目的端口号:标识接收方的通信端口
在UDP/IP协议栈中,多路分解具体通过以下字段实现:
目的IP地址:标识目标主机
目的端口号:标识接收方的通信端口
总结多路分解和多路复用的流程:
多路复用:
-
数据收集:从不同应用的套接字接收数据(如淘宝商品数据、支付宝支付数据)
-
封装打包:为每个数据块添加包含端口号、序列号等信息的首部
-
网络传输:将封装后的报文段交给网络层进行路由
多路分解:
-
报文段解析:提取数据包首部中的关键字段(如端口号、协议类型)
-
套接字匹配:根据字段信息查找对应的应用程序专用通道
-
数据投递:将有效载荷送入匹配的套接字缓冲区
2.4TCP与UDP的差异对于这个复用和分用功能

在系统层面来说TCP是可以实现一对多端口的连接的,但是对于UDP在系统层面就无法满足
原因解释:
TCP协议的多路复用与分解机制就像一个精密的快递专送系统,能够为每个客户建立专属运输通道(连接)。在TCP通信中,每个连接都由独特的四元组(源IP地址、源端口号、目的IP地址、目的端口号)进行唯一标识 ,这四个参数共同构成了一个唯一的标识符,用于区分不同的TCP连接。 例如,假设你正在使用微信与朋友聊天,同时用淘宝浏览商品。这两个应用会分别绑定到不同的本地端口(如12345和54321),并通过服务器的IP地址和端口(如 114.34.125.67:80 )建立连接。操作系统会根据四元组将来自网络的数据包正确分发到对应的程序。
这种四元组机制确保: 每个支付请求都能找到专属通道 不同用户的数据不会混淆 双向通信的完整路径可追踪
这与UDP协议形成鲜明对比:UDP仅通过目的端口号区分应用,而TCP通过四元组实现精确连接识别。 UDP是无连接的协议,其套接字仅由目的IP和端口号标识。因此**,两个不同的源IP或源端口发送的UDP数据包会被视为同一目标端口的请求**,除非它们携带了特殊的标识信息。
2.5基于TCP所拥有的优良特性
1. 避免混淆: 假设你同时用微信和钉钉与同事沟通,它们可能都连接到同一台服务器(如114.34.125.67:443 )。由于两者的本地端口不同(如 12345 和 56789 ),服务器可以通过四元组将响应数据包正确返回到对应的应用。
2. 支持并发连接 : 一台服务器(如阿里巴巴云服务器)可以同时处理成千上万的TCP连接。通过四元组,服务器能够快速定位每个连接的客户端,并为其提供服务。例如,当多个用户同时访问京东商城时,服务器会根据每个用户的IP地址和端口号分配独立的连接。
3. 可靠性保障: TCP的四元组还用于维护连接状态(如序列号、窗口大小)。例如,在视频通话中,若网络波动导致部分数据包丢失,服务器和客户端可以通过四元组重新确认未收到的数据包,确保通信的连续性。
3.差错检测
在UDP和TCP的报文首部添加校验码,如同快递包裹上的条形码,用于验证数据完整性。 例如,微信文件传输时,接收方会核对校验码确保文件未被损坏。
4.提供面向连接和无连接的传输协议(即TCP和UDP协议)
在互联网的分层体系中,运输层如同连接应用层与网络层的"双轨铁路",为应用程序提供两种截然不同的通信方式。
UDP(用户数据报协议):无连接不可靠,相当于"标准快递"服务,不承诺送达保证但速度快。适用于对实时性要求高但能容忍少量数据丢失的场景。比如抖音直播采用UDP协议传输视频流,即使偶尔丢包也不会影响观看体验。
TCP(传输控制协议):有连接可靠,类似"特快专递"服务,通过确认机制和重传策略确保数据完整送达。适用于需要可靠传输的场景。比如淘宝订单支付使用TCP协议,确保交易数据准确无误地传递。
TCP是有连接的可靠传输 所以TCP中为了保证可靠性 引入了一些机制: TCP会把数据分成一段一段传输。
1. TCP通过流量控制、序列号、确认应答和定时器机制,确保数据完整无误地送达。
