运输层和应用层详解--计算机网络读书笔记

运输层和应用层详解

  • 1 运输层
    • 1.1 端口号、复用和分用
    • 1.2 UDP和TCP的对比
    • 1.3 TCP
      • 1.3.1 三次握手建立连接
      • 1.3.2 四次挥手释放连接
      • 1.3.3 流量控制
      • 1.3.4 拥塞控制
        • 慢开始和拥塞避免
        • 快重传和快恢复
      • 1.3.5 超时重传
      • 1.3.6 可靠传输
  • 2 应用层
    • 2.1 C/S和P2P
    • 2.2 万维网WWW
    • 2.3 DHCP
    • 2.4 DNS
    • 2.5 FTP
    • 2.6 电子邮件
      • 基于万维网的电子邮件

视频链接: 计算机网络微课堂.
  物理层、数据链路层、网络层共同解决了将异构网络的主机互连起来的问题, 实现了主机到主机之间的通信,但通信的真正实体使两个主机里的进程。如何为运行在不同主机的应用进程提供直接的通信服务是运输层的服务,运输层协议又称为端到端协议。

1 运输层

1.1 端口号、复用和分用

  运行在计算机上的进程使用进程标识符PID来表示,但是不同操作系统之间(Windows,Linux,Mac OS)进程标识符是不同的,为了达到统一,TCP/IP协议的运输层规定应用进程用端口号来表示。

  • 端口号用16比特来标识,取值范围为0~65535。

    • 熟知端口号:0~1023,IANA把这些端口号分配给TCP/IP体系中最重要的一些协议,比如FTP使用21/20,HTTP80,DNS53。
    • 登记端口号:1024~49151,为没有熟知端口号的程序使用。使用这类端口号必须按照IANA的规定手续登记,以防止重复。
    • 短暂端口号:49152~65535,留给用户进程选择暂时使用。
  • 发送方的复用和接收方的分用
    运输层和应用层详解--计算机网络读书笔记_第1张图片

TCP/IP体系的应用层常用协议的端口号:
运输层和应用层详解--计算机网络读书笔记_第2张图片

1.2 UDP和TCP的对比

UDP(User Datagram Protocol)用户数据报。
TCP(Transmission Control Protocol)传输控制协议。
UDP是无连接的,TCP是面向连接的
UDP支持单播、多播和广播,TCP只支持单播
UDP是面向应用报文的,TCP是面向字节流的
UDP向上提供无连接不可靠的传输服务,尽最大努力交付,适用于IP电话,视频会议等实时应用;TCP向上层提供面向连接的可靠传输服务,适用于文件传输等。
UDP首部仅8个字节,TCP首部最小长度为20字节,最大长度为60字节
运输层和应用层详解--计算机网络读书笔记_第3张图片
运输层和应用层详解--计算机网络读书笔记_第4张图片

1.3 TCP

TCP是面向连接的协议,它基于运输连接来发送TCP报文段。TCP运输连接有三个阶段:

  1. 建立TCP连接
  2. 数据传送
  3. 释放TCP连接
  4. 运输层和应用层详解--计算机网络读书笔记_第5张图片

1.3.1 三次握手建立连接

  一开始,服务器进程创建传输控制块,用来存储TCP连接中的一些重要信息,然后服务器进程进入监听(Listen)状态,准备接收客户端进程的连接请求。客户端进程首先也是建立传输控制块,随后进行下面三次握手:
运输层和应用层详解--计算机网络读书笔记_第6张图片

  • 第一次握手:客户端进程发送TCP连接请求,TCP连接请求报文段首部的同步位SYN=1,序号字段seq=x,作为初始序号。(TCP规定SYN被设置为1的报文段不能携带数据,但会消耗序号)
  • 第二次握手:服务端进程收到TCP连接请求报文段后,向客户端进程发送连接请求确认报文段,并进入同步已接收状态,同步位SYN=1,确认位ACK=1,序号字段seq=y,确认号字段ack=x+1,这是对初始序号的确认。
  • 第三次握手:客户端进程收到TCP连接请求确认报文段后,向服务器进程发送普通的TCP确认报文段,并进入连接已建立状态,ACK=1,seq=x+1,ack=y+1,这是对服务器进程的初始序号进行确认。服务器进程在收到TCP确认报文段后,也进入连接已建立状态。
    运输层和应用层详解--计算机网络读书笔记_第7张图片
    采用三报文握手而不是两报文握手来建立连接,是防止已失效的连接请求报文段突然又传送到了服务器,因而导致错误。

1.3.2 四次挥手释放连接

  • 第一次挥手:客户端进程发送TCP连接释放报文段,并进入中止等待1状态,首部的中止位FIN=1,确认位ACK=1,序号字段seq=u,即TCP客户点进程之前传送的数据的最后一个字节的序号加一,ack=v,即客户端进程之前已收到的数据的最后一字节的序号加一
  • 第二次挥手:服务器进程收到TCP连接释放报文段后,会发送普通的TCP确认报文段,ACK=1,seq=v,即服务器进程传送的数据的最后一字节的序号加一,ack=u+1,这是对TCP连接释放报文段的确认。此时从客户端进程往服务器进程的连接就释放了
  • 第三次挥手:服务器进程发送TCP连接释放报文段,FIN=1,ACK=1,seq=w,即服务端发送数据的最后一字节的序号加一,ack=u+1,这是对之前的TCP连接释放报文段的重复确认
  • 第四次挥手:客户端进程发送普通的TCP确认报文段,ACK=1,seq=u+1,表示消耗掉一个序号,ack=w+1,这是对TCP连接释放报文段的确认,服务端进程进入关闭状态,而客户端进程还要经过两倍MSL(最长报文段寿命)才能关闭(原因:如果最后的确认报文段丢失了,必然会造成服务器进程对TCP连接释放报文段的超时重传,而处于关闭状态的客户端不会接收,因此服务端进程并一直处于最后确认状态)

运输层和应用层详解--计算机网络读书笔记_第8张图片
  保活计时器的作用:TCP服务器进程每次收到客户端进程的数据,就重新设置一次保活计时器(例两小时),如果保活周期内未收到客户端进程发来的数据,则到时后服务器进程发送一个探测报文段,每隔75s发送一次,若连续发送10个报文段仍无响应,就关闭连接。

1.3.3 流量控制

  流量控制(flow control)就是让发送方发送速率不要太快,让接收方来得及接收,实现机制是滑动窗口
在这里插入图片描述
TCP接收方利用自己接收窗口的大小来限制对方发送窗口的大小。
TCP发送方接收到对方的零窗口通知后,应启动持续计时器,持续计时器超时后,向接收方发送零窗口报文段。

1.3.4 拥塞控制

  拥塞(Congestion),在某段时间,若对某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏。只要有发送报文段出现丢失,发送方就默认产生了网络拥塞。
网络中的带宽,交换节点中的缓存、处理机等都是网络资源。
若出现拥塞而不进行控制,整个网络的吞吐量将随输入负荷的增大而下降。
运输层和应用层详解--计算机网络读书笔记_第9张图片
下面是四种拥塞控制算法,有这些假设:1、数据是单方向传送的;2、接收方总是有足够大的缓存空间,发送方的发送窗口大小仅由网络拥塞程度来决定;3、以TCP最大报文段为单位,而不是以字节为单位

慢开始和拥塞避免

慢开始是指一开始向网络注入的报文段比较少,而不是指拥塞窗口(在假设中等于发送窗口)增长得慢,相反,拥塞窗口的增长速度是指数型的。
拥塞避免不是指完全避免拥塞,而是指在拥塞避免阶段将拥塞窗口的增长控制为线性增长,使网络不容易出现拥塞。
发送方维护一个慢开始门限,当发送窗口小于慢开始门限时,使用慢开始算法;当发送窗口大于慢开始门限时,不使用慢开始算法,而使用拥塞避免算法;当发送窗口等于慢开始门限时,既可以使用慢开始算法,也可以使用拥塞避免算法。
当网络发生拥塞时,将慢开始门限设置为发生拥塞时的拥塞窗口值的一半,并且将拥塞窗口值设置为1。

运输层和应用层详解--计算机网络读书笔记_第10张图片

快重传和快恢复

有时个别报文段会丢失,但此时并未发生网络拥塞,这导致发送方超时重传,且把拥塞窗口设置为1,并开始慢开始算法,这样降低了传输效率。而快重传算法可以让发送方尽早知道发生了个别报文段的丢失。
快重传,即让发送方尽快重传,而不是等待超时重传计时器超时再重传。要求接收方不要等待自己发送数据时才捎带确认,而是立即确认,即使收到了失序的报文段也要立即对已收到的报文段重复确认,发送方一旦收到三个重复确认,就立即重传,而不是等待超时重传计时器。
快恢复,发送方一旦收到三个重复确认,就知道现在只是丢失了个别的报文段,于是不启动慢开始算法,而是启动快恢复算法。发送方把慢开始门限和拥塞窗口调整为之前的一半,开始执行拥塞避免算法。

1.3.5 超时重传

超时重传时间的选择是TCP比较复杂的问题之一。
不能使用单次测量的往返时间来计算超时重传时间,而应该利用每次测量得到的往返时间,计算加权平均往返时间RTTs,再得到超时重传时间RTO。
RTTs=(1-α) x 旧RTTs+α x 新RTTs
α值一般设为0.125。
RTO=RTTs+4 x RTTD
针对超时重传时无法测准往返时间RTT的解决:只要超时重传了,就不采用其往返时间样本。但是这样有可能时延突然增大了很多,而超时重传时间一直无法更新,就会出现一直超时重传的情况。
解决办法:报文段每重传一次,就对超时重传时间翻1倍。

1.3.6 可靠传输

基于以字节为单位的滑动窗口实现可靠传输。
运输层和应用层详解--计算机网络读书笔记_第11张图片
可以使用三个指针实现滑动窗口的维护:
运输层和应用层详解--计算机网络读书笔记_第12张图片
某一时刻,发送方的发送窗口不一定等于接收方的接收窗口,原因:

  1. 网络传输发送窗口值需要经历一定的时间滞后
  2. 发送方可能根据网络拥塞情况适当减小发送窗口大小

对于不按序到达的字节流,TCP无明文规定,有两种处理方式:

  1. 接收方把未按序到达的数据一律丢弃,但这样会导致发送方发送重复的数据,占用网络资源
  2. 接收方先临时存放再接收窗口,等缺少的字节收到后,再交付到上层的应用层处理

TCP要求有累计确认和捎带确认机制,这样可以减小传输开销。但接收方不应过分推迟发送确认,否则会导致发送方的超时重传,TCP规定推迟时间不应超过0.5s,且如果收到最大长度的报文段,应该每隔一个报文段就发送一个确认。捎带确认往往很少发生,因为大多数应用程序很少同时双向发送数据。TCP通信是全双工通信,因此每一方都有自己的发送窗口和接收窗口。

2 应用层

应用层是计算机网络体系结构的最顶层,是设计和建立计算机网络的最终目的,也是计算机网络中发展最快的部分。

2.1 C/S和P2P

网络应用程序在各种端系统上的组织方式和它们之间的关系主要有:客户/服务器方式(C/S)和对等方式(P2P)。
客户/服务器(Client/Server,C/S)是因特网上最传统和最成熟的方式,WWW,SMTP,FTP等都是采用C/S方式,常用计算机群集来构成一个强大的虚拟服务器。
运输层和应用层详解--计算机网络读书笔记_第13张图片
对等方式(Peer to Peer,P2P)没有固定的服务请求者和服务提供者,应用主要有P2P文件共享,即时通信,P2P流媒体,分布式存储等。最突出特性是可拓展性。
运输层和应用层详解--计算机网络读书笔记_第14张图片

2.2 万维网WWW

  万维网(World Wide Web)不是特殊的计算机网络,而是运行在因特网上的分布式应用。通过网页之间的超链接将不同网页连接成逻辑上的信息网。
目前流行的浏览器和它们使用的内核:
运输层和应用层详解--计算机网络读书笔记_第15张图片
  浏览器最重要的部分是渲染引擎,也就是浏览器内核,负责对页面内容进行解析和显示。
为了方便访问在世界范围的文档,万维网使用统一资源定位符URL来指明因特网上任何种类资源的位置。URL一般形式由以下部分组成:
在这里插入图片描述
例:
在这里插入图片描述
  超文本传输协议(HyperText Transfer Protocol,HTTP),HTTP协议定义了怎样向万维网服务器请求万维网文档,以及万维网服务器怎样把万维网文档传输给浏览器。
HTTP/1.0使用非持续连接方式,HTTP/1.1使用持续连接方式。

2.3 DHCP

  动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)提供了即插即用联网,这种机制允许一台计算机加入新网络时,可自动获取IP地址等网络配置信息而不用手工参与。
DHCP在运输层使用UDP协议封装。DHCP在为获取到IP地址后设置IP地址为0.0.0.0。
现在是每一个网络至少有一个DHCP中继代理(路由器),而不是每一个网络有一台DHCP服务器,它配置了DHCP的IP地址信息,作为各网络中计算机和DHCP服务器的桥梁。

2.4 DNS

域名系统(Domain Name System,DNS)
域名转换IP过程:

  1. 用户主机在自己的DNS高速缓存中查询域名对应的IP地址,
  2. 没有找到,会向网络中的DNS服务器进行查询,DNS服务器中有域名和IP地址映射的数据库

  因特网采用层次树状结构的域名系统。域名的结构由若干个点号隔开,分别表示不同级别的域名。每一级不超过63字符,不区分大小写字母,级别最低在最左边,级别最高在最右边,完整域名不超过255个字符。
运输层和应用层详解--计算机网络读书笔记_第16张图片
顶级域名分为以下三类:

  • 国家顶级域名:cn表示中国,us表示美国,uk表示英国
  • 通用顶级域名:com表示公司企业net表示网络服务机构org表示非盈利组织int国际组织,edu表示美国教育系统,gov表示美国政府部门,mil表示美国军事部门(之所以是美国,因为是顶级域名,不是二级域名)
  • 反向域:即IP地址反向解析为域名

我国将二级域名划分为以下两类

  • 类别域名:共七个,ac表示科研机构,com表示企业(注意与顶级域名区分),edu表示教育机构,gov表示政府部门,net表示提供网络服务的机构,mil表示军事机构,org表示非盈利组织。
  • 行政区域名:共34个,如bj为北京市,sh为上海市等。

因特网的域名空间:
运输层和应用层详解--计算机网络读书笔记_第17张图片
DNS使用分布在各地的四种服务器来实现域名到IP地址的转换。

  • 根域名服务器
  • 顶级域名服务器
  • 权限域名服务器
  • 本地域名服务器,也称默认域名服务器

域名解析的过程:
递归查询:
运输层和应用层详解--计算机网络读书笔记_第18张图片
迭代查询:
运输层和应用层详解--计算机网络读书笔记_第19张图片

2.5 FTP

文件传送协议(File Transfer Protocol,FTP)是因特网上使用最广泛的文件传送协议。
FTP提供交互式访问,允许客户指明文件的类型和格式,并允许文件具有存取权限。FTP屏蔽了各操作系统的细节,适合于在因特网络中任意计算机之间传输文件。
FTP客服和服务器之间要建立两个并行的TCP连接,控制连接使用21端口和数据连接使用20端口。

2.6 电子邮件

电子邮件系统有三个主要组件构建:用户代理,邮件服务器,以及电子邮件协议。电子邮件协议包括发送协议SMTP和读取协议POP或IMAP。
简单邮件传送协议(Simple Mail Transfer Protocol,SMTP),SMTP协议只能传送ASCII码文本数据,不能传送可执行文件或者二进制文件,不能满足音频视频等的需要,许多国家的文字也不能用SMTP传送。
为了解决上述问题,提出了多用途因特网邮件拓展(Multipurpose Internet Mail Extensions,MIME),发送方和接收方都需要用它转换。MIME不仅可用于SMTP,也可用于HTTP。
运输层和应用层详解--计算机网络读书笔记_第20张图片
邮局协议(Post Office Protocol,POP),是因特网正式标准。用户只能下载并删除或者下载并保留,不能管理自己的邮件。
因特网邮件访问协议(Internet Mail Access Protocol,IMAP),是因特网建议标准。用户在自己的计算机上就可以操作邮件服务器中的邮箱。
POP和IMAP都是用TCP协议。

基于万维网的电子邮件

通过浏览器登录邮件服务器万维网网站就可以撰写,收发,阅读和管理电子邮件。

你可能感兴趣的:(计算机基础课程,网络,网络协议,tcp/ip)