目录
七、传输层
传输层:实现应用进程之间按序可靠的数据传输功能
1.传输层服务特性
①面向字节流和面向报文的服务
面向字节流服务
应用层提供的数据是一串无结构的字节流
传输层可以对数据进行分段
数据没有长度限制
面向报文服务
应用层提供的是一系列报文
传输层不对报文进行分割和拼装
报文长度受限制
②面向连接和无连接的服务
面向连接的服务:
a. 发送端传输层和接收端传输层之间开始数据传输前有个协调过程:
需要确定双方是否就绪:终端是否在线等
双方需要分配一些资源
双方需要协商一些参数
b. 面向连接服务提供发送端至接收端按序、 可靠传输服务
面向无连接的服务
a. 发送端传输层和接收端传输层之间开始数据传输前没有协调过程
b. 无连接服务提供发送端至接收端不按序、不可靠传输服务
③传输层连接与其他层连接的区别
P.S. 传输层的连接是一些参数约定和资源预留
2.端口号
端口号终端中统一编址
标识终端中不同应用进程
具有终端本地意义
P.S. 端口号由16位二进制数标识
端口的分配:
互联网数字分配机构IANA:The Internet Assigned Numbers Authority
著名端口号:标识标准Internet服务进程
注册端口号:标识用户服务进程
临时端口号:临时端口号与进程之间的关联是动态的
UDP和TCP著名端口号
3.用户数据报协议UDP
①UDP的服务特性和功能
②UDP协议分析
源端口:16位,用于标识发送进程
目的端口:16位,用于标识接收进程
长度:16位,以字节为单位给出UDP报文长度
检验和:16位,用于对包括数据的UDP报文进行检错
P.S. 解决发送进程和接收进程的标识问题,包括数据在内的UDP报文传输出错检验问题,但缺乏重传机制和拥塞控制机制
UDP协议三要素:
语法:格式,包括四个控制字段
语义:
接收端发现数据错误丢弃
有相应端口号对应的进程,把数据交给应用进程
没有相应端口号对应的进程,则丢弃数据
没有时序,时序体现报文之间的关联性,而UDP每个报文是独立的
③UDP用途举例
a. 数据传输的实时性比数据传输的可靠性重要的应用
e.g. VoIP:通过IP网络传输语音信号
VOIP应用对差错控制和拥塞控制的需求:
接收端只需检验UDP报文传输过程中是否出错,不会要求发送端重新发送传输出错的UDP报文
由于语音通信的实时性,为了保证VOIP系统的通信质量,需要在网络中预留带宽,网络拥塞控制也不需要
b. 简短交互应用
只需要一次交互过程
交互过程中双方传输简短报文
要求交互的实时性尽可能好
用UDP实现简短交互应用优点:
省略建立连接和释放连接过程所需要的开销
可以提高交互过程的实时性
4.传输控制协议TCP
TCP的服务特性和功能
TCP
1. TCP报文格式
字段的设置不TCP实现的功能密切相关
标识进程
对字节流拆分组装
差错控制
流量控制
建立和释放连接
其他控制字段
标识进程
源端口和目的端口号:各占2个字节,用于标识通信双方的应用进程
对字节流拆分组装
序号:4 字节,TCP 连接中传送的字节流中的每一个字节都编上一个序号。序号字段的值指的是本报文段所发送的数据的第一个字节的序号
差错控制
检验和:16位,用于对包括数据的TCP报文进行检错
确认序号:4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。所有序号小于确认序号的报文都被正确接收了
确认位(ACK):只有当ACK=1,确认序号字段才有效
流量控制
窗口:发送端允许发送的数据的字节数的上限,发送端实际发送的数
据的字节数还受网络状态制约
建立和释放连接
同步位(SYN):如果SYN=1、 ACK=0,意味着是连接请求TCP报文,如果SYN=1、 ACK=1,意味着是同意建立连接的响应TCP报文,因此,如果SYN=1,则处于TCP连接建立过程
终止位(FIN):当FIN=1,表明发送端已完成数据传输,请求释放TCP连接
复位 (RST) : 当 RST = 1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立连接
其他控制字段
紧急 URG :当 URG = 1 时,告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)
紧急URG指针:16 位,指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)
推送 PSH (PuSH):接收 TCP 收到 PSH = 1 的报文段,就尽快地交付接收应用进程(较高优先级)
TCP首部长度:4位二进制数,它以32位二进制数(4字节)为单位,TCP首部的最大长度为15×4=60字节,也称为数据偏移字段
保留:占 6 位,保留为今后使用,但目前应置为 0
P.S. TCP报文格式体现了TCP协议的语法,语法为传输层服务功能而服务
2. 建立和释放连接过程
①建立连接过程
TCP采用客户/服务器方式
主动发起连接建立的应用进程称为客户
被动等待连接建立的应用进程叫服务器
a. 客户端发送连接请求:SYN=1、 ACK=0、字节流起始序号=x
b. 服务器若响应连接建立请求:SYN=1、 ACK=1、确认序号=x+1、服务器要和客户端发送数据的起始序号=y、窗口=WS、确认序号=y+1
c. 只有当客户端接收到连接建立响应后发送:SYN=0、 ACK=1,窗口=WC
三次握手
②释放连接过程
a. 客户完成数据发送,就向服务器发送一个连接释放请求:FIN=1,ACK=1,序号=u(u是客户端发送完成的数据的最后一个字节的序号加1)
b. 服务器在接收到该连接释放请求后:以确认序号u+1作为该连接释放请求的确认应答,FIN=0,并释放为接收数据而分配的资源
c. 客户端向服务端器发出确认应答,释放为接收数据而分配的资源,关闭整个连接,FIN=0
d. 服务器端在接收到客户端的确认应答后,释放和该TCP连接相关的所有资源,关闭整个连接
四次挥手
连接建立过程——确定参数
初始序号
初始窗口值
释放连接过程——释放接收端资源
缓冲区
删除TCP连接表中相关信息
③发送窗口和接收窗口
发送窗口
发送窗口是发送端允许发送的序号范围
根据确认序号和接收端的窗口大小不断调整
接收窗口
确认应答中窗口字段值W=L-(b-a)
3. TCP差错控制机制
端到端数据传输出错情况分析:
端到端存在多条传输路径,TCP报文经过网络传输后可能错序
端到端传输路径经过的某条物理链路出现问题,使得数据传输过程中被丢弃
接收端可能会重复接收TCP报文
TCP报文传输过程中可能会出错,接收端通过检验和检测出错误,被丢弃
分组交换设备因为拥塞导致端口输出队列溢出可能丢掉TCP报文(主要原因)
差错控制机制的核心:检错、确认应答和重传
接收端接收到正确的数据,则发送确认应答,若接收错误的数据,则丢弃
发送端保留发送的数据报文,直到收到该数据的确认应答才能删除
TCP用确认序号给出接收端已经成功接收的字节流
发送端在规定时间内接收不到确认应答,重发数据报文
TCP采用连续ARQ传输机制
数据分段
分段长度由TCP进程确定,确定长度考虑重传效率、接收端缓冲区大小、也要考虑不能超过IP分组的最大长度、尽量避免IP分组被分片等
确认应答过程
重传
差错控制机制的本质是出错重传,以下情况视为出错:
TCP报文在传输过程中丢失
因为TCP报文内容传输过程中出现错误,被接收端丢弃
因为错序且TCP报文中字节的序号不属于接收窗口,被接收端丢弃
发送端确定某个TCP报文出错的依据有两个:
发送端设置重传定时器,重传定时器溢出,未收到确认应答
连续接收4个确认序号相同的确认应答
P.S. 一般情况下重传定时器溢出时间大于接收到4个确认序号相同的确认应答时间
偶尔丢失TCP报文情况 | 大量丢失TCP报文情况 |
按序到达的数据调整确认序号,未按序到达的数据维持确认序号不变
e.g. ACK(2001)
4. TCP拥塞控制机制
拥塞:指分组交换设备中经过某条链路的流量超出链路的传输能力,使得输出队列中等待输出的报文越来越多,以至于发生输出队列溢出,报文丢弃的情况
网络发生拥塞的原因
拥塞主要和网络流量的分布状态有关
提高转发结点的性能并不能消除拥塞
解决拥塞的简单办法是控制发送端流量
如何确定网络发生拥塞呢?
网络传输TCP报文过程中发生丢失报文说明发生拥塞
报文丢失就需要重传,因此重传就需要调整发送端流量
在确定网络发生拥塞的情况下,如何调整发送端流量呢?
TCP避免和消除拥塞的机制
控制流量依据
接收端的处理能力
网络状态
①接收端的处理能力通过确认应答中的窗口字段告知发送端
②网络状态
拥塞窗口CWND:TCP拥塞控制机制的目标是找出网络能够承载的发送端至接收端的流量,这种流量用拥塞窗口表示
发送窗口:发送的实际窗口值=MIN [ CWND ,接收端公告的窗口字段值 ]
发送端调整流量就是改变拥塞窗口的值
a. 慢启动——探测网络状态
在TCP连接刚建立时,发送端通过逐步增大拥塞窗口来探测网络能够承载的流量
TCP连接刚建立时,发送1个TCP报文
收到确认应答后,发送2个报文,依此成倍增大
达到接收端公告的窗口值,或发生报文丢失
b. 重传定时器溢出时拥塞窗口调整过程
重新开始慢启动
当前拥塞窗口一半作为慢启动阈值
拥塞避免:一旦超过慢启动阈值,线性增长,逐步接近拥塞点
c. 连续接收到多个重复确认应答时向下调整拥塞窗口机制
流量降到拥塞窗口一半
线性增长
5.TCP与IP分工
IP尽力而为传输服务的原因
路由器采用数据报交换方式
简化路由器IP分组转发过程,省去费时的数据检错,只对IP首部检错,以提高核心路由器的IP分组转发能力
TCP功能设定的原因
终端的处理能力越来越强,由终端完成数据的传输控制过程成为可能
解决网络拥塞的根本手段是限制终端进入网络的流量,终端是控制数据传输过程的合适设备
6.TCP差错控制与传输网络差错控制之间的关系
链路层帧携带的检错码不能检测出所有的错误
传输网络无法处理路由器因为拥塞丢弃IP分组的情况
每一个IP分组独立选择传输路径,使得IP分组端到端传输时延变化很大,个别IP分组因为传输时延太大被接收端拒绝接收
接收端的缓冲器大小决定了接收端的接收窗口大小,IP分组不能按序到达的特性使得部分IP分组因为不在接收窗口范围内被接收端拒绝接收,这种错误传输网络也无法检测出来
合理设置传输网络差错控制机制
如果传输网络的可靠性很好,两个结点之间链路层帧传输出错的概率很小,可以取消该传输网络的重传机制,如以太网。
如果传输网络的可靠性较差,两个结点之间链路层帧传输出错的概率较大,需要由传输网络本身的差错控制机制及时完成该传输网络对应的链路层帧的出错重传过程,如无线局域网
八、应用层
1.DNS域名解析服务
域名系统(Domain Name System,DNS)
产生域名系统(DNS)的原因
IP地址难记
主机的IP地址是变化的
↓
用名字来标识主机
建立主机名字与IP地址之间的映射
通过域名解析过程完成域名到IP地址的转换过程
①资源记录
资源记录用于实现以下功能:
建立完整合格的域名与IP地址之间的映射
建立域名服务器之间的关联
由下述字段组成:
<名字,类别,类型,值>
名字:解析的域名
类别:给出定义类型的实体,目前只有一种类别:IN,表明是Internet。
类型:说明名字和值之间的关系
A(地址):名字是完全合格的域名,值是与该完全合格的域名对应的IP地址
NS(域名服务器):名字是域名,值是负责该域的域名服务器的完全合格的域名
CNAME(别名):名字是某个完全合格的域名的别名,值是该完全合格的域名
MX(邮件 ):名字是信箱地址中的域名,值是该邮件服务器的完全合格的域名,如有多个邮件服务器,在值前面用数字来表示优先级
值:解析结果
②域名解析过程:把一个完全合格的域名转换为对应的ip地址的过程
a. 域名服务器结构
域名服务器结构与域名结构之间是有关联的
b. 域名解析过程
终端基本配置
终端配置的本地域名服务器是终端解析域名时访问的第一个域名服务器
查找缓冲区
检索Hosts文件内容
递归解析过程
终端A配置的域名服务器地址是a.com域的服务器的地址
迭代解析过程
2.DHCP动态主机配置协议
DHCP:Dynamic Host Configuration Protocol,动态主机配置协议是一种自动为终端配置网络信息的协议,是基于C/S的应用层协议
IP地址
子网掩码
默认网关(或称默认路由器)地址
本地域名服务器地址
DHCP服务器功能:
响应DHCP客户发送的配置请求
管理网络配置信息
①DHCP无中继工作过程
a. DHCP请求报文封装过程
b. DHCP客户和DHCP服务器交互过程
②DHCP中继工作过程
通过DHCP中继过程解决多个VLAN共享一个DHCP服务器的问题
其中一个作用域的默认网关地址是switch0连接路由器接口的ip地址,路由器连接switch0的IP地址需要通过命令行接口指定中继地址,即DHCP服务地址
3.万维网
①统一资源定位器URL
统一资源定位器(Uniform Resource Locator,URL)的通用形式
<URL的访问方式>://<主机>:<端口>/<路径>
常见的URL访问方式
文件传输协议FTP:ftp://rtfm.mit.edu/pub/abc.txt
超文体传输协议HTTP:http://www.tsinghua.edu.cn/chn/yxse/index.htm
主机字段给出被访问对象所在的服务器:完全合格域名或IP地址
路径字段给出访问对象在服务器中的存放位置:如文件的访问路径
②超文本传输协议HTTP
HTTP用于浏览器访问WEB服务器的应用协议,是一种请求、响应型协议
HTTP请求报文所要求的访问操作主要有以下这些:
GET URL:请求读取由URL标识的信息
PUT URL:在URL标明的位置下存储一个文档
DELETE URL:删除URL标识的资源
浏览器访问WEB服务器过程
③超文本标记语言HTML
多个在不同操作系统上运行的浏览器可能访问同一个Web页面
如何保证不同浏览器以同样的格式在屏幕上显示该Web页面?
标准语言:HTML
HTML:Hypertext Markup Language
一种用来描述Web页面显示格式的标准语言
e.g. <HTML>
<HEAD>
<TITLE>这是一个HTML文档显示实例</TITLE>
</HEAD>
<BODY>
<H1>显示文档主体</H1>
<P>第一个段落
由两行组成</P><P>第二个段落</P>
</BODY>
</HTML>
参考资料:
俞海英老师,《网络技术与应用》,中国大学MOOC
注:诚恳欢迎读者对本文提出批评意见,若发现存在错误,我定第一时间修改。如果读者觉得文章对您有帮助,欢迎点赞鼓励一下哟٩(๑❛ᴗ❛๑)۶。