计算机网络:运输层 要点学习笔记"/>
计算机网络:运输层 要点学习笔记
1运输层协议概述
运输层(Transport Layer)负责实现应用进程之间的逻辑通信,其基本目的是为通信双方的主机提供端到端的服务。
1.1进程间通信
两个主机进行的通讯实为两个主机中的应用进程相互通信(端到端的通信)。在一个主机中经常有多个应用进程同时分别和另一个主机中的多个应用进程通信,因此运输层的一个重要功能为复用和分用。
复用:指发送方不同的应用进程都可以使用同一个运输层协议传送数据;
分用:指接收方的运输层在博取报文搜捕后能够把这些数据正确交付目的应用程序。
1.2端口及套接字
1.2.1端口
大多数操作系统都支持多程序(进程)同时运行,为了确定目的主机应该把接收到的数据包传送给众多同时运行的进程中的哪一个,TCP/IP或UDP/IP协议使用了协议端口(简称端口,port)的概念,用于对通信的进程进行标识。
端口是一种抽象的软件结构,应用程序通过系统调用与某端口建立连接(即绑定),之后传输层传给该端口的数据都被相应进程所接收,相应进程发给传输层的数据都通过该端口输出。
端口类似门牌号,客户端可以通过ip地址找到对应的服务器端,但是服务器端是有很多端口的,每个应用程序对应一个端口号,通过类似门牌号的端口号,客户端才能真正的访问到该服务器。为了对端口进行区分,将每个端口进行了编号,这就是端口号。
每个端口都拥有一个端口号(protocol port number),其主要作用是区分同一台计算机中的不同进程所提供的服务(区分不同端口),该端口号可用于寻址。
端口号只具有本地意义,置位标识本地计算机应用层中的各进程,在Internet中不同计算机的相同端口号没有联系。此外,由于传输层的两个协议TCP和UDP是完全独立的两个软件模块,因此各自的端口号也相互独立。
运输层的端口号分为服务器端使用的端口号和客户端使用的端口号。
1.2.2套接字
套接字(socket)可以看成两个程序进行通信连接的一个端点。
应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。
区分不同应用进程间的网络通信和连接,依靠:
- 通信的目的IP地址
- 使用的传输层协议
- 使用的端口号
将这3个参数结合起来,与一个“插座socket”绑定,就形成了一个套接字接口,应用层和传输层通过套接字接口实现数据传输的并发服务。
套接字的格式为端口号拼接到IP地址,即:套接字Socket=(IP地址:端口号)
2运输层的主要协议
TCP/IP的运输层有两个不同的协议:用户数据报协议(UDP)和传输控制协议(TCP)。
两个对等运输实体在通信时传送的数据单位叫作运输协议数据单元 (Transport Protocol Data Unit,TPDU)。TCP传送的数据单位协议是TCP报文,UDP传送的数据单位协议是UDP报文。
TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。
2.1 UDP用户数据报协议
用户数据报协议 (User Datagram Protocol, UDP)是一个简单的面向无连接的,不可靠的数据报的传输层协议:无连接指传送数据前不需要先建立连接,对方的运输层收到UDP后不需要给出任何确认;UDP尽最大努力交付,不一定被正确交付给接收端,因此不可靠。
每个UDP报文除了包含用户发送的数据外,还有报文的目标端口号和源端口号,从而UDP可以把报文传送给正确的接收者。UDP适合在简单的交互场合使用。
UDP只在IP的数据报服务至上增加了端口的功能和差错检测的功能。
UDP是面向报文的。发送方UDP对应用层交下来的报文,在添加首部后(变为IP数据报)就交付网络层;接受方UDP对网络层交上来的报文,在去除首部后就交付应用层。
UDP有两个字段:数据字段和首部字段,首部包含源端口和目的端口。
从UDP报文格式可看出UDP比TCP简单很多。
2.2 TCP传输控制协议
简介
传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
- 面向连接
TCP 面向连接,应用进程在使用TCP协议之前,必须先建立TCP连接,在传送数据完毕后,必须释放已建立的TCP连接。每一条TCP连接只能有两个端点(Endpoint),即每一条TCP连接只能是点对点的。 - 可靠传输
TCP提供 ** 可靠传输的服务 **,通过TCP连接传送的数据,无差错、不丢失、不重复、按序到达。 - 面向字节流
**流(stream)**指流入到进程或从进程流出的字节序列。
应用程序和TCP每次交互的数据长度可能不同,但TCP将应用程序提交的数据看成一连串无结构的字节流。
为了提供字节流传输,发送方和接收方都要使用缓存,即接收缓存和发送缓存。
报文结构
一个TCP报文分为首部和数据两部分,首部包括源端口和目的端口。
TCP的运输连接管理
应用进程在使用TCP协议之前,必须先建立TCP连接,在传送数据完毕后,必须释放已建立的TCP连接。
运输连接有3个阶段:连接建立、数据传送和连接释放。
TCP连接的建立都是采用客户/服务器方式。主动发起连接建立的应用进程叫做客户,被动等待连接建立的应用进程叫做服务器。通过执行三次握手(three-way handshake way)来建立TCP连接。
一次握手:客户端发送请求报文(首部同步位SYN=1,同时选择一个初始序号seq=x)给服务器,等待服务器确认,该步骤目的为确认客户端具备发送能力,服务器具备接收能力;
二次握手:服务器回复确认(ACK)报文给客户端,同时服务器发送SYN报文给客户端,该步骤目的为确认服务器具备发送能力,客户端具备接收能力;
三次握手:客户端回复ACK报文给服务器;
可靠传输的工作原理及实现
由于IP层只提供尽最大努力的服务,即TCP下面是不可靠的传输,所以TCP必须采取措施使通信变为可靠的。可以通过使用确认和重传机制在不可靠的运输网络上实现可靠的通信。
发送方用于存储应用进程准备发送数据的缓存称发送缓存,对该缓存设置一个发送窗口;
接收方用于接收正确收到的字节流的缓存称接收缓存,对该缓存设置一个接收窗口。
对字节流状态进行跟踪,发送的字节可分下列4种状态:
- 已经发送且确认的字节;
- 已经发送但没有被确认的字节;
- 尚未发送且接收方没有做好准备接收的字节;
- 尚未发送且接收方没有做好准备接收的字节;
发送方每发送一个报文,都会启动一个重传定时器,若倒计时结束前收到确认,则报文传输成功,否则失败,重传报文。
常见的可靠运输协议常称为自动重传请求ARQ(Automatic Repeat reQuest):意思是重传的请求时自动进行的,接收方不用告诉发送方重传那个出错分组。常用的自动重传请求协议包括:停止-等待ARQ协议、连续ARQ协议(后退N ARQ协议)和选择重传ARQ协议。
TCP的流量控制
流量控制(Flow Control)指让发送方的发送速率不超过接收方的接收速率,防止出现报文丢失的现象。
传输层利用滑动窗口协议(Sliding Window Protocol)实现流量控制,滑动窗口的大小即接收方缓存区的大小。
接收方将在每个确认中发送一个非零窗口通告,若发送方发送速率过快使接收方缓存区溢出,则接收方发送零窗口通告,发送方将停止发送直至接收到接收方新发送的非零窗口通告。
TCP的拥塞控制
拥塞控制(congestion control)指防止过多的数据输入网络中,这样可以使网络中的路由器或链路不过载。
TCP的拥塞控制方法有慢开始和拥塞避免,快重传和快恢复。
流量控制和拥塞控制不同点:
拥塞控制是一个全局的过程。
流量控制往往指在给定的发送端和接受端之间的点对点通信量的控制。
3网关
网关(Gateway)工作在网络层以上。网关又称网间连接器、协议转换器。
根据情况的不同,网关可以在不同的层次进行协议转换,网关的协议转换一般是一对一的协议转换,不同的通信子网互联,网关在网络层实现通信协议的转换;如两个网络在传输层使用了不同的传输协议,则它们的互联需要在传输层实现传输协议的转换;在应用层的应用系统使用了不同的数据格式,则使用网关完成数据格式的转换。
网间连接:网关仅用于两个高层协议不同的网络互连。网关既可以用于广域网互连,也可以用于局域网互连。
协议转换:网关是一种充当转换重任的计算机系统或设备,可使用在不同的通信协议、数据格、语言,甚至体系结构完全不同的两种系统之间。
4总结
UDP应用于效率要求相对高,但对准确性要求相对较低的场景。
TCP应用于效率要求相对低,但对准确性要求相对较高的场景。
更多推荐
计算机网络:运输层 要点学习笔记
发布评论