网络运输层简介以及它与网络层关系

本文深入探讨了互联网传输层协议如何在不同主机的进程间提供逻辑通信,解释了传输层与网络层之间的关系,并通过邮递服务与孩子间的逻辑通信类比加以说明。同时介绍了TCP和UDP两种传输层协议的基本职责与服务特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3.1 Introduction and Transport-Layer Service

传输层协议在运行于不同计算机上的应用进程之间提供logical communication,逻辑通信的意义是指,从应用的角度,好像运行于各种计算机上的进程是直接连接的,事实上,在计算机的角度却大相径庭,它们得通过很多路由和各种线路连接,应用进程利用传输层所提供的logical communication服务来发送messages,而不用担心这些message在物理层基础设施的传输细节

上图我们看到,传输层协议在终端系统实施而不是在网络路由,在发送方,传输层把它从应用进程那里收到的应用程message转化成传输层packet,称为segments,这种转化是将message分成许多小的块并在每块的前边加上传输层header成为传输层segment,然后传输层会把这个segment传输给发送方的网络层,在那里segment被封装入网络层packet(datagram)并发送给目标,重点指出网络路由器只在网络层datagram传输中涉及,也就是说它们不涉及segment被封装为datagram的阶段,在接收方,网络层从datagram中提取出segment然后向上传输给传输层,传输层处理收到的segment,让接收方应用获得segment中的数据

3.1.1 Relationship Between Transport and Network Layers

在协议栈中传输层就是网络层的上一层,传输层协议是在不同主机的进程间提供逻辑通信,网络层协议是在主机间提供逻辑通信
有个很好的例子来说明网络层和传输层的关系,东西海岸各有一个房子,每个房子里各有12个小朋友,他们每周都要给彼此写一封信(总共144篇),然后在这两边的12个孩子(cousins)中都分别有个孩子(Ann and Bill)负责收集信件交给邮差和从邮差那里收到信件并分发给其他孩子,
这个例子中,邮递服务提供了两个房子间的逻辑通信——从一个房子到另一个房子,不是从一个人到另一个人,另一方面,那两个负责收集分发的孩子提供了孩子间的逻辑通信,从孩子们的角度,那两个孩子就是mail service,即使这两个孩子仅仅是这个端对端传输进程中的一部分,这个例子中:
application messages = letters in envelopes
processes = consins
housts = houses
transport layer protocol = Ann and Bill
network-layer protocol = postal service
沿着这个例子继续,我们知道Ann和Bill只是在各自的家里工作,一样的,传输层协议在终端中,把message从应用进程送到network edge(就是网络层),反过来也如此,但是它并不涉及message是怎么在网络核心传送的,如上图中,中间的路由器不会受到传输层加在message上的信息的影响
假设现在Ann和Biill去度假,Susan和Harvey来替代他们,然而不幸的是他们两个不再固定的日期进行收发,不频繁而且经常丢信件, 因此这两个人和Ann和Bill提供的服务是不一样的,做个类比,计算机也会有不同的传输层协议,每个协议大概会提供给应用不同的服务
像Ann和Bill的服务会受到邮差的影响一样,传输层的服务也会受到网路层的影响, 如果网络层不能在主机间提供带宽和延迟保证,那么传输层也就无法在进程间提供这种保证,但是网络层协议不提供的服务有时传输层也可以提供,例如,即使下层的网络层不能提供可靠地数据传输,上层的传输层也可以提供这种服务,也就是说即使网络层协议丢失,篡改或者复制了packet,另一个例子,传输层协议可以通过加密保证应用消息不被入侵者读到,即使网络层不能给传输层segment提供这种保障

3.1.2 Overview of the Transport Layer in the Internet

回想下互联网,或者更通常的说TCP/IP网络,为应用层提供两个截然不同的传输层协议,UDP和TCP,当开发网络应用的时候,开发者必须得在其中选择,在2.7节我们看到,当创建sockets的时候开发者需要在其中选择
在TCP和UDP的简介之前,来说一点网络层的东西是很有用的,互联网的网络层协议叫做IP(Internet Protocol),IP提供计算机间的逻辑通信,IP服务模型是一个best-effort delivery service,就是说IP会尽最大努力来在计算机之间传输segments,不会保证segments的有序传递,也不能保证segment中数据的完整性,所以是被称为unreliable service,每个host至少有一个网络层地址,所谓的IP,
简要的说完IP之后我们来说UDP和TCP,它们最基本的职责就是把IP提供的终端系统之间的通信扩展到运行于终端系统上的进程之间的通信,把host-to-host传输扩展为process-to-process传输被称为传输层复用和分用,UDP和TCP还通过在segment header包含error detection fields来提供完整性检查,这两个最小的服务——process-to-process数据传输和错误检查是UDP唯二提供的服务, IP和UDP都是unreliable service
TCP为应用提供些其他的服务,首先是reliable data transfer,用flow control,sequence number,acknowledgements,timers等技术,TCP保证在进程间的传输是有序的,TCP因此把IP的不可靠的终端系统间的服务变成可靠的进程间的服务,TCP还提供congestion control,这个服务通常是提供给Internet多一些而不是给应用,笼统的讲,TCP congestion control让所有的TCP连接都不会因为过大的流量淹没正在交流的计算机间的链接的路由,TCP努力让每个连接能平等的享有带宽,通过控制发送端能发送到网络中的速率来控制,而UDP就是无调节的,使用UDP协议的应用可以用它开心的速率发送它开心的时间

### 网络层传输层的关系网络通信中,网络层和传输层扮演着至关重要的角色。这两者在不同模型中有不同的职责划分。 #### OSI 模型中的网络层传输层 在OSI七层模型中: - **网络层**主要负责路由选择、逻辑寻址以及数据包的转发。这一层确保数据可以从源地址传递到目标地址[^4]。 - **传输层**则专注于端到端的数据传输服务,包括但不限于错误检测纠正、流量控制、连接管理和确认机制等。此层提供了可靠的或不可靠的服务选项给上层应用使用[^1]。 #### TCP/IP 模型中的网络层传输层 而在TCP/IP四层模型里: - **网络层(Internet 层)**的功能被简化为仅处理IP寻址及数据报文的发送接收工作;不涉及复杂的纠错流程,而是假定下层物理链路可以基本无误地传送信息[^5]。 - **传输层**承担起了更多的责任,比如通过TCP协议实现面向连接的可靠交付,或是利用UDP提供简单高效但不具备保障特性的通讯方式[^3]。 #### 区别联系 尽管两个模型对于这两个层次有着各自独特的定义,但是它们共同的目标都是为了支持应用程序间有效的数据交换过程。具体来说: - 在OSI模型中,网络层更侧重于路径的选择和服务质量(QoS),而传输层关注的是如何保证消息准确无误地到达目的地; - 相反,在TCP/IP架构内,由于互联网环境下的不确定性较大,因此更多依赖于强大的传输层来进行重传请求和其他形式的安全措施补偿可能存在的丢包现象[^2]。 ```python # Python伪代码展示两者的交互 def network_layer(data_packet, destination_ip): # 处理路由选择并准备发往下一跳节点 next_hop = choose_route(destination_ip) send_to_next_hop(next_hop, data_packet) def transport_layer(segment, remote_port): # 执行必要的传输层操作如ACK/NACK反馈循环 if check_integrity(segment): deliver_data(remote_port, segment.payload) else: request_retransmission() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值