从通信和信息处理的角度看:运输层向它上面的应用层提供通信服务,是面向通信的最高层,也是用户功能的最底层。

运输层的重要性:从IP层来说,通信的两端是主机,IP数据报的首部明确标志了这两个主机的IP地址。但是真正通信的实体是主机中的进程,严格的讲,两个主机的通信是两个主机中的应用进程互相通信,IP协议虽然能将数据报送到目的主机,但是仍然停留在网络层,没有交付给进程。

从运输层角度看:通信的真正端点不是主机,而是主机中的进程。

运输层与网络层的区别:网络层为主机之间提供通信,运输层为主机中的进程间提供通信。

运输层的一个重要功能:

复用:发送方不同的应用进程都可以使用同一个运输层协议传送数据

分用:接收方的运输层剥去报文首部能够把这些数据正确交付目的应用进程

运输层还要对接收的报文进行差错检测。

两个主要协议:

TCP:传输控制协议

UDP:用户数据报协议

UDP传输数据报前不需要建立连接,远地主机收到UDP报之后,不需给出任何确认。(不可靠服务)

TCP:面向连接服务,传输前建立连接,传输后释放连接。不提供广播或多播服务。增加了很多开销,占用了处理机资源。

进程的创建和撤销是动态的。

运输层采用协议端口来解决进程标识问题。

注:协议栈层间的抽象的协议端口号是软件端口。与硬件端口是两个概念。软件端口是应用层的各种协议与运输实体进行层间交互的一种地址。

运输层用一个16位的端口号,但端口号只具有本地意义。它只是为了标志本计算机应用层中的各个进程在和运输层交互时的层间接口。在不同计算机中,相同的端口号是没有关联的。

运输层的端口号共分为两大类:

服务器端使用的端口号:分为熟知端口号(0-1023),分给了TCP/IP的一些重要的应用进程和登记端口号

客户端使用的端口号(49152-65535),在客户进程运行时才动态选择,又叫短暂端口。

用户数据报协议UDP

特点:

无连接的:不需要建立连接,因此减少了开销和发送数据前的时延

不可靠的:因此不需要维持复杂的连接状态表

面向报文的:UDP对应用层交下来的报文不合并,不拆分。只添加首部后就向下交付给IP层。

没有拥塞控制:因此网络出现的拥塞不会使源机的发送速率降低。

支持一对一,一对多,多对一和多对多的交互通信

UDP首部开销小:只有八个字节,TCP首部至少20个字节

UDP首部:

源端口

目的端口

长度

检验和

4个部分各2字节,共八字节

UDP检验和时,需要加一个12字节的首部

源IP地址(4)

目的IP地址(4)

0(1)

17(1)

UDP长度(2)

传输控制协议TCP

特点:

面向连接的运输层协议:使用TCP协议之前,先建立TCP连接,传输数据完毕后,释放已建立的TCP连接

每一条TCP连接只能有两个端点:每一条TCP连接只能是点对点的。

提供可靠的交付服务:通过TCP连接传送的数据,无差错,不丢失,不重复并且按时到达

提供全双工通信

面向字节流:“流”是指流入到进程或从进程流出的字节序列

TCP不保证接收方应用进程所收到的数据块与发送方应用程序所发出的数据块具有大小对应关系。

TCP与UDP发送报文采用方式完全不同:TCP不关心应用进程一次把多长的报文发送到TCP缓存中,而是根据对方给出的窗口值和当前网络的拥塞程度来决定一个报文段应包含多少字节

TCP连接的端点叫套接字或插口。套接字socket=(IP地址:端口号)

每一条TCP连接 唯一地通信两端的两个端点(即两个套接字)确定。

注:同一个IP地址可以有多个不同的TCP连接,而同一个端口号也可以出现在多个不同的TCP连接中。

可靠传输的工作原理

因为IP层是不可靠的服务,因此TCP必须采用适当的措施才能使用两个运输层间的通信更可靠。

停止等待协议

设计:发送方(A)如果一段时间内没有收到接收方(B)的确认,则认为刚才发送的分组丢失了,重传前面发送的分组,称超时传送,要实现超时重传,则在发送完一个分组设置一个超时计时器。

注:1.A在发送完一个分组后,必须暂时保留已发送分组的副本。2.分组和确认分组都需要进行编号。3.超时计时器设置的时间应当比数据在分组传输的平均往返的时间更长一些。

确认丢失和确认迟到

若B收到A的数据,B向A发送的确认丢失了,因此A在超时后,重新发送数据,B收到了重传的分组,则:

丢失这个重复的分组,不向上层交付

向A发送确认。

若出现确认迟到:A会收到重复的确认,A的处理方法:收下后丢弃。B:会收到重复分组,丢弃分组,并重新发送确认分组。

通过确认和重传机制:可以在不可靠的传输网络上实现可靠的通信。

可靠传输协议常称为自动重传请求(ARQ)

停止等待协议优点:简单

缺点:信道利用率低  U=Td/(Td+RTT+Ta)

Td=分组长度/数据率   RTT:往返时间    Ta:B发送分组需要的时间

连续ARQ协议

维持一个发送窗口,意义:位于窗口内的分组都可以连续发送出去,不需要等待对方的确认。

协议规定:发送方每收到一个确认,滑窗向前滑动一个分组的位置,并发送新的分组。接收方一般采用累计确认的方式。接收方不必对收到的分组逐个发送确认,而是对按序列到达的最后一个分组发送确认,

累积确认的优点:容易实现,即使确认丢失也不重传。

缺点:不能向发送方反映接收方已经正确收到的所有分组的信息。

TCP报文段首部格式(20字节)

源端口和目的端口:各占两个字节,分别写入源端口和目的端口号。

序号:4字节,序号范围(0~2^32-1)。序号值是指本报文段所发送的数据的第一个字节的序号

确认号:4字节,是期望收到对方下一个报文段的第一个数据字节的序号。注:若确认号为N,则表明到序号N-1为止的所有数据都已正确收到

数据偏移: 4字节,指TCP报文段的数据起始处距离TCP报文段的起始处有多远,实际指出TCP报文段的首部长度。TCP首部最小长度为20字节,最长60字节(数据偏移值的最大值  4*15),即选项长度不能超过40字节。

保留:占6位(6个控制位)(6-11介绍)

紧急URG:当URG为1时,表明紧急指针字段有效,表明应当尽快发送。优先级较高。TCP把紧急数据插入到本报文段数据的最前面,与首部的紧急指针一起使用。

确认ACK:仅当ACK=1时,确认号字段才有效。TCP规定。在连接建立后,所有传送的报文段都必须把ACK置为1

推送PSH:两个进程进行交互通信时,一端的应用进程希望在键入一个命令后立即能够收到对方的响应。这时,使用PSH,这时PSH置为1,并立即创建一个报文段发送,接收方TCP收到PSH=1的报文段,会尽快交付应用进程。

复位RST:RST=1时,表明TCP连接出现严重错误,必须释放连接,然后重新建立。

同步SYN:在建立连接时,来同步序号,当SYN=1而ACK=0时,表示这是一个连接请求报文段。若对方同意连接,则在响应报文段中使SYN=1,ACK=1.因此SYN=1表示这是一个连接请求或连接接受报文

终止FIN:释放一个连接。当FIN=1时,表示报文段的发送方的数据发送完,要求释放连接。

窗口:2字节。值【0,2^16-1】间的证书。窗口是发送本报文段的一方的接收窗口。窗口值告诉对方:从确认号考试,接收方目前允许对方发送的数据量(因为接收方的数据缓存有限),并且窗口值是动态变化的。

检验和:2字节,同UDP一样,添加一个12字节的伪首部

紧急指针:2字节,仅当URG=1时才有意义。

最大报文长度MSS:MSS是TCP报文段中的数据字段的最大长度=TCP报文长度-TCP首部长度。

TCP可靠传输的实现

以字节为单位的滑动窗口:接收方只能对按序列收到的数据中的最高序号给出确认。

若A发送完发送窗口中的数据时,必须停止发送。若一段时间后(超时计时器控制)没有收到接收方的确认,则必须重传数据,直到收到B的确认号为止。若确认号在A的发送窗口中,则使A发送窗口向前移动,并且发送新的数据。

TCP的流量控制

流量控制就是让发送方的发送速率不要太快,要让接收方来得及接受。

利用滑动窗口机制可以在TCP连接上实现对发送方的流量控制。

发送方的发送窗口不能超过接收方给出的接收窗口的数值。

注:TCP的窗口单位是字节,不是报文段。

TCP为每一个连接设置了持续计时器,预防互相等待的死锁局面形成。在计时器时间到达后,发送一个零窗口探测报文段(只有1字节的数据),若窗口仍是0,则收到的一方重新设置计时器。若不是0,则死锁的局面打破了

TCP的拥塞控制

若对网络中某一个资源的需求超过了该资源所能提供的可用部分,网络性能就会变坏,则称作拥塞。

几种拥塞控制的方法:慢开始,拥塞避免,快重传和快恢复。

TCP的运输连接管理

运输连接有三个阶段:连接建立,数据传送和连接释放

三次握手协议:

A向B发送连接请求报文段,这时同步位SYN=1,初始序号seq=x。TCP规定:SYN=1的报文段不能携带数据,但仍然消耗一个序号。这时,TCP客户进程进入了SYN-SENT(同步已发送)状态。

B收到连接请求报文段后,向A发送确认。这时SYN=ACK都设置为1,确认号ack=x+1(希望下次A发送的序号是x+1),同时也为自己选择一个序号seq=y,这时TCP服务器进程进入SYN-RCVD(同步收到)状态

TCP客户进程收到B的确认后,还要向B发送确认,确认报文段的ACK置1,确认号ack=y+1,而自己的序号seq=x+1。

可以将三次握手过程形象的归纳如下:

1:A发,B收,B知道A能发;

2:B发,A收,A知道B能发能收;

3:A发,B收,B知道A能收。

三次握手目的:为了防止已经失效的连接请求报文段突然又传回了B。(比如A发送的延时了)

四次握手协议:

客户的应用进程向TCP发送连接释放报文段,并停止发送数据。FIN置为1,seq=u。A进入了FIN-WAIT-1(终止等待1)状态。这时客户进程只能接受,不能发送

服务器收到释放报文段后发送确认,确认号是ack=u+1。B进入了CLOSE-WAIT(关闭等待)状态

服务器没有数据要发送了,则服务器发送释放连接请求报文。FIN=1,ack=u+1,seq=w。B进入了LAST-ACK(最后确认状态)。

客户进程收到服务器的释放连接请求报文后,对此发送确认。确认报文段中ACK=1,ack=w+1,seq=u+1。然后进入到TIME-WAIT(时间等待状态)。经过时间计时器设置的时间2MSL(MSL是最长报文段寿命),进入到CLOSE状态。

根本原因:一方发送FIN表示自己发完了所有要发的数据,但是还允许对方继续把没发完的数据发过来。

2MSL的设置:

保证客户进程发送的最后一个ACK报文能到达服务器进程,若丢失,会在2MSL时间内重传,并且重新启动计时器。

防止已失效的连接请求报文段出现在本连接中。A在发送完最后一个ACK报文段后,再经过2MSL时间,可以使得本连接持续时间内的报文段全部从网络中小时,使下一个新的连接中不会出现旧连接的请求报文段。

标签:运输,字节,确认,报文,基础,TCP,发送,计算机网络,连接

来源: https://blog.csdn.net/Evildoer_llc/article/details/88766849

计算机网络基础的五个层,计算机网络基础(五) 运输层相关推荐

  1. 计算机网络osi参考模型分为几层,计算机网络的七层OSI参考模型

    描述 1.OSI参考模型 国际化标准组织(ISO)提出的网络体系结构模型,称为开发系统互联参考模型(OSI/RM),通常简称为OSI参考模型.OSI有七层,自下而上依次为物理层.数据链路层. 网络层. ...

  2. 【山外笔记-四级计算机网络】第1章 网络技术基础

    一.计算机网络的形成和发展 1.计算机网络的形成 (1)面向终端的远程联机系统 面向终端的远程联机系统是实现了以单个计算机为中心的联机系统,是一种典型的计算机与数据通信相结合的产物. 1946年世界第 ...

  3. 高一计算机网络技术应用计划,高一计算机网络应用基础教学计划

    高一计算机网络应用基础教学计划 成都市工程职业技术学校 学期授课计划 授课学期 2015年上学期 课程名称 计算机网络应用基础 适用班级 2014级计算机 1 班 任课教师: 袁冬梅 2015 年 3 ...

  4. 计算机网络拓扑结构说课稿,计算机网络应用基础说课稿修稿稿

    计算机网络应用基础说课稿修稿稿 (6页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 计算机网络的分类说课稿第1页共6页计算机网络的分类说 ...

  5. 计算机网络协议第一章,网络协议基础知识

    序    我计划开发一个系列专栏,将自己在网络方面的积累完善成一个系列知识,让读者的监督和拍砖督促自己并提高自己.如果在读本人的系列文章得到些许收获,那对我来说是更大的收获.    本系列的阅读应该不 ...

  6. 计算机网络基础知识论文摘要,计算机网络基础知识论文大纲格式 计算机网络基础知识论文框架如何写...

    [100个]计算机网络基础知识论文大纲格式供您参考,希望能解决毕业生们的计算机网络基础知识论文框架如何写相关问题,写好提纲那就开始写计算机网络基础知识论文吧! 五.高职<计算机网络>课程活 ...

  7. 计算机网络第三章知识网络,计算机基础教案第三章计算机网络基础知识教案

    计算机 基础 教案 一.网络基础知识 1.计算机网络的概念 计算机网络是指将分布在不同地理位置的具有独立功能的多台计算机用通信设备连接起来,并配以相应的网络软件,以实现信息传递和资源共享. 计算机网络 ...

  8. 第六章 计算机网络与i教案,大学计算机基础教案第6章计算机网络基础与应用.docx...

    广东第二师范学院计算机科学系教案 课程名称 计算机基础I 课程代码 111012003 课程类型 公必√□ 专必□ 专选□ 公选□ 授课方式 讲授□ 实践□ 案例讨论□ 上机√□ 考核 方式 考试□√ ...

  9. 计算机网络基础实训精品课,《计算机网络技术》精品课程建设总结报告【荐】.doc...

    <计算机网络技术>精品课程建设总结报告[荐].doc <计算机网络技术>精品课程建设总结报告 一.课程定位及历史沿革 <计算机网络技术>课程是计算机网络技术专业的主 ...

最新文章

  1. sequence oracle mysql,oracle sequence转mysql(mysql实现oracle的sequence功能)
  2. python中元组_理解python中的元组
  3. The Future Of the Software Development
  4. AI开发学习: 第一款AI药物诞生:英国公司“光速”制药碾压传统研发
  5. MySql 查询同一字段多个结果合并到一行显示 GROUP_CONCAT
  6. 为什么在反向传播中感知器初始值不能为0_深度学习理论分享之——单层感知器简述...
  7. 正则 null_正则表达式exec、match、test的区别
  8. leetcode - 983. 最低票价
  9. vue获取编辑器纯文字_前端富文本编辑器 vue-html5-editor
  10. 跳表(Skip list)
  11. java web试题_Java web开发经典面试题汇总(内附答案详解)
  12. 相等运算符重载中的问题
  13. 从零开始,DIY一个jQuery(2)
  14. 如何在java输入_怎么在java中编写输入语句?
  15. Docker 比较好的新入门教程
  16. JavaScript基础功能代码实现
  17. w764位计算机右键管理,为win764位旗舰版右键添加“管理员取得所有权”方法
  18. 华为系统云服务器地址,华为系统云服务器地址
  19. krpano使用示例
  20. 6-7 使用函数求素数和 (20 分)

热门文章

  1. 主流机器学习框架介绍
  2. 妈蛋!HR你搞我,我的缺点就是身体不好不能加班,怎么了?
  3. 【图】【热传】安全漏洞破解的奇迹
  4. 将中文括号变为英文括号
  5. 计算机拼歌曲,抖音你这辈子有没有为别人拼过命是什么歌
  6. 第一性原理·非线性成长·人生模式
  7. 浅记项目管理交付标准
  8. mapi java_Powershell从注册表中查询默认MAPI客户端的例子
  9. Linux的obj文件,【IOS开发】linux 下安装object-c环境。。(初期学习的时候用)
  10. 毛利率、净利率和成本利润率的区别是什么 ?