计算机网络自顶向下方法第三章学习笔记

运输层负责应用进程之间的逻辑通信,通过多路复用与分解技术将数据准确送达目标进程。UDP提供无连接服务,通过端口号实现多路复用与分解;TCP则在提供可靠数据传输的基础上,利用滑动窗口协议和拥塞控制机制,确保数据的高效传输。TCP连接管理中的三次握手和四次挥手确保了连接的稳定建立与安全关闭。

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

运输层(报文段)

1、运输层概述

运输层为运行在不同主机上的应用进程之间提供逻辑通信功能。应用进程使用运输层提供的逻辑通信功能彼此发送报文,而无需考虑承载这些报文的物理基础。

运输层和网络层的关系:网络层提供了主机之间的逻辑通信,运输层为在不同主机上的进程之间提供了逻辑通信。运输层协议只在主机起作用,运输层能够提供的服务受制于网络层协议的服务模型。

UDP和TCP的责任是将两个端系统间IP的交付服务扩展到进程之间的交付服务。将主机间交付扩展到进程间交付被称为多路复用和多路分解。

网络协议IP协议提供的是不可靠服务,并不能保证数据的完整性等。UDP同样是一种不可靠服务,但可以提供进程间数据传输和差错检查两种服务。TCP在此基础上提供附加服务:(1)可靠数据传输,通过流量控制、序号、确认和定时器,TCP可以将两个端系统间不可靠的IP服务转为进程间的可靠数据传输服务。(2)拥塞控制,防止某一条TCP连接用过多流量来淹没主机间的链路。

2、多路复用和多路分解

一个进程有一个或多个套接字,相当于从网络向进程传递数据和从进程向网络传递数据的门户。运输层实际上是将数据交付给套接字。

每个运输层报文段中有几个字段,接收端运输层会检查这些字段,标识出接收套接字,从而定向到该套接字。将运输层报文段中的数据交付到正确的套接字的工作成为多路分解。源主机从不同的套接字接收数据块,并为每个数据块封装上首部信息形成报文段,并将报文段传到网络的过程叫做多路复用。

多路复用要求:(1)套接字有唯一标识符(2)每个报文段有特殊字段来指示该报文段要交付到的套接字。特殊字段是指端口号。端口号是一个16比特数,0-1023为固定端口号,如HTTP(80端口)、FTP(21端口)。

无连接的多路复用和多路分解:

clientSocket = socket(socket.AF_INET,socket.SOCK_DGRAM)生成一个UDP套接字,运输层自动为其分配一个端口号。也可以通过bind()函数为其关联一个特定的端口号。

UDP套接字由一个目的IP地址和一个目的端口号,如有两个UDP报文段有不同的源IP地址和源端口,但有相同的目的IP地址和目的端口,这两个报文段将通过相同的套接字被定向到相同的目的进程中。

面向连接的多路复用和多路分解:

与UDP不同,TCP套接字由一个四元组来标识,包括源IP,源端口,目的IP,目的端口。TCP需要建立连接,建立的方法如下:

TCP服务器在12000端口listen,TCP客户创建一个套接字并发送一个连接建立请求报文段,当服务器接收到该请求时,服务器会定位12000端口等待的进程并为其创建一个套接字,用[源IP,源端口,目的IP,目的端口]来标识,则可以建立与源端口的连接。服务器主机可以支持很多并行的TCP套接字,每个套接字与一个进程连接,从而提供并行的服务。当今高性能的服务器通常只有一个进程,而是为每个新客户连接创建一个具有新套接字的线程。

3、UDP协议(无连接运输)(8字节首部)

UDP协议只对IP协议增加了多路复用和分解功能以及少量的差错检测。

DNS(域名系统)是运用UDP的一个例子。UDP的优势:(1)实时性较强,TCP由于其拥塞控制实时性较弱(2)无需建立连接,没有建立连接的时延,因此DNS运行在UDP上,HTTP运行在TCP上(3)无连接状态,TCP需要在端系统中维护连接状态,包括接收和发送的缓存、拥塞控制参数以及序号与确认号的参数(4)分组首部开销小。

常见应用及其运输协议:

应用 应用层协议 运输
### 计算机网络自顶向下方法 第7版 第5章 学习笔记 #### 5.1 网络层控制平面概述 在网络层中,除了负责数据传输的数据平面外,还存在一个至关重要的组成部分——控制平面。控制平面的主要职责在于决定分组如何从源到达目的地的具体路径[^1]。 #### 5.2 路由算法分类 路由选择协议是控制平面上的核心机制之一,用于确定最佳路径。这些协议可以根据不同的标准进行分类: - **静态 vs 动态**:静态路由配置固定不变;动态路由则能随网络状况调整。 - **集中式 vs 分布式**:前者依赖中央节点处理所有决策;后者允许各路由器独立作出最优选择。 - **内部网关协议 (IGP)** **外部网关协议 (EGP)** :分别适用于自治系统内之间的通信[^3]。 #### 5.3 RIP 协议详解 RIP(Routing Information Protocol)是一种广泛使用的距离矢量型动态路由协议。其特点如下: - 使用跳数作为度量单位; - 定期广播更新消息给邻居路由器; - 收敛速度较慢,在大型复杂网络环境中表现不佳[^5]。 ```python def rip_update(neighbor_distances): updated = False for neighbor, distance in neighbor_distances.items(): new_distance = min([distance + d for n, d in distances_to_neighbors.items() if n != neighbor]) if new_distance < known_distances[neighbor]: known_distances[neighbor] = new_distance updated = True return updated ``` #### 5.4 OSPF 协议介绍 OSPF(Open Shortest Path First)属于链路状态类型的路由协议,具有更高的效率灵活性。该协议通过构建完整的拓扑图并应用Dijkstra算法找到最短路径树来实现高效寻径。 ```python import heapq def dijkstra(graph, start_node): shortest_paths = {start_node: (None, 0)} current_node = start_node visited = set() while current_node is not None: visited.add(current_node) destinations = graph.edges[current_node] weight_to_current_node = shortest_paths[current_node][1] for next_node, weight in destinations.items(): weight += weight_to_current_node if next_node not in shortest_paths: shortest_paths[next_node] = (current_node, weight) else: current_shortest_weight = shortest_paths[next_node][1] if current_shortest_weight > weight: shortest_paths[next_node] = (current_node, weight) next_destinations = {node: shortest_paths[node] for node in shortest_paths if node not in visited} if not next_destinations: break current_node = min(next_destinations, key=lambda k: next_destinations[k][1]) return shortest_paths ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值