专栏首页土豆专栏计算机网络基础知识整理--运输层
原创

计算机网络基础知识整理--运输层

小编最近正在复习计算机网络基础,整理出一些我认为比较重要的知识,后续会更新~

1,运输层为相互通信的应用进程提供逻辑信息

从IP层来说,通信的两端是两个主机。IP数据报的首部明确地标志了这两个主机的IP地址。我们需要知道,真正进行通信的实体是在主机中的进程,是这个主机中的一个进程和另一个主机中的进程在交换数据(即通信)。因此严格地讲,两个主机进行通信就是两个主机中的应用进程进行通信。IP协议虽然等把分组送到目的主机,但是这个分组还停留在主机的网络层而没有交付主机中的应用进程。从运输层的角度看,通信的真正端点并不是主机而是主机中的进程。也就是说,端到端的通信是应用进程之间的通信

图1-1 运输层为相互通信的应用进程提供了逻辑通信

可以这样理解逻辑通信:沿水平方向直接传送数据,但事实上这两个运输层之间并没有一条水平方向的物理连接。数据的传送是沿着图中的虚线方向(经过多个层次)传送的

可以从上图中看出,网络层为主机之间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信。

2,端口和套接字

硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址。在协议栈层间的抽象的协议端口是软件端口。

TCP/IP的运输层用一个16位的端口号来标志一个端口,但需要注意的是,端口号只具有本地含义,它只是为了标志本计算机应用层中的各个进程和运输层进行交互时的层间接口,在因特网不同计算机中,相同的端口号是没有任何关联的。

接下来再介绍两类端口号

  • 服务器端使用的端口号 这里又分两类,最重要的一类叫做熟知端口号或系统端口号,数值为0~1023。IANA(互联网数字分配机构)把这些端口号指派给了TCP/IP最重要的一些应用程序,让所有用户都知道。当一种新的应用程序出现以后,IANA必须为它指派一个熟知端口,否则因特网上的其他应用进程就无法和它进行通信。另一类叫做登记端口号,数值为1024~49151.这类端口号必须在IANA按照规定的手续等级,以防止重复。
  • 客户端使用的端口号 数值为49152~65535 。由于这类端口号仅在客户进程运行时才动态选择,因此又叫做短暂端口号。这类端口号是留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的端口号,因而可以把数据发送给客户进程。通信结束后,刚才已使用过的客户端口号就不复存在,这个端口号就可以供其他客户进程使用

套接字:TCP把连接作为最基本的抽象,每一条TCP连接有两个端点,TCP连接的端点就是套接字(socket)或插口。根据RFC793的顶替工艺:端口号拼接到IP地址即构成了套接字。

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

TCP连接 :: ={socket1,socket2}={(IP1:port1),(IP2:port2)}

3,无连接的UDP(User Datagram Protocol)

远地主机的运输层在收到UDP报文后,不需要给出任何确认。虽然UDP没提供可靠交付,但在某些情况下UDP却是一种最有效的工作方式。

4,面向连接的TCP协议((Transmission Control Protocol)

提供面向连接的服务。在传送数据之前必须先建立连接,数据传送结束后要释放连接。TCP不提供广播或多播服务。由于TCP要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销。如确认、流量控制、计时器以及连接管理等。这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。

5,在不可靠的网络上实现可靠传输的工作原理,停止等待协议和ARQ协议

理想的传输条件有以下两个特点:

  • 传输信道不产生差错
  • 不管发送方以多快的速度发送数据,接收方总是来得及处理收到的数据。

在这样理想传输条件下,不需要采取任何措施就能够实现可靠传输。但一般实际的网络都不具备以上两个特点。

停止等待协议

每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组

只有收到序号正确的确认帧 ACKn 后,才更新发送状态变量 V(S)一次,并发送新的数据帧。接收端接收到数据帧时,就要将发送序号 N(S) 与本地的接收状态变量 V(R) 相比较。若二者相等就表明是新的数据帧,就收下,并发送确认。否则为重复帧,就必须丢弃。但这时仍须向发送端发送确认帧 ACKn,而接收状态变量 V(R) 和确认序号 n 都不变。连续出现相同发送序号的数据帧,表明发送端进行了超时重传。连续出现相同序号的确认帧,表明接收端收到了重复帧。

发送端在发送完数据帧时,必须在其发送缓存中暂时保留这个数据帧的副本。这样才能在出差错时进行重传。只有确认对方已经收到这个数据帧时,才可以清除这个副本。

发送端对出错的数据帧进行重传是自动进行的,因而这种差错控制体制常简称为ARQ(Automatic Repeat reQuest),自动请求重传。

连续ARQ协议:

图5-1 连续ARQ协议的工作原理

连续ARQ协议规定,发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。上图表示发送方收到了对第一个分组的确认,于是就把发送窗口向前移动一个分组的位置。如果原来已经发送了前五个分组,那么现在就可以发送窗口内的第六个分组的。

接收方一般都是采用累积确认的方式。也就是说,接收方不必对收到的分组逐个发送确认,而是在收到几个分组后,对按序到达的最后一个分组的确认,这就表示:到这个分组位置的所有分组都已正确收到了。

注:TCP和UDP后续会重点讲解,在这里就先简略介绍啦~

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 计算机网络基础知识整理--数据链路层

    小编最近在复习计算机网络基础,整理出来一些我认为比较重要的知识。希望能帮到大家哈,后续会更新~

    黄桂期
  • 计算机网络基础知识整理--数据通信基础

    小编最近在复习计算机网络基础,整理出来一些我认为比较重要的知识。希望能帮到大家哈,后续会更新~

    黄桂期
  • Java面试之栈和队列

    队列:基于地址指针进行遍历,而且可以从头部或者尾部进行遍历,但是不能同时遍历,无需开辟空间,因为在遍历的过程中不影响数据结构,所以遍历速度快

    黄桂期
  • 【Python版】 极简单方式实现 Circos

    很高兴再次见到生信技能树的粉丝们,我是技能树VIP小编tsznxx,目前在安德森肿瘤医院工作,记忆力好的小朋友应该对我之前的教程有印象: 用GenePred注释...

    生信技能树
  • 框架篇:linux网络I/O+Reactor模型

    网络I/O,可以理解为网络上的数据流。通常我们会基于socket与远端建立一条TCP或者UDP通道,然后进行读写。单个socket时,使用一个线程即可高效处理;...

    潜行前行
  • 五分钟掌握微信小程序轮播图

    从公共库v1.4.0开始,change事件返回detail中包含一个source字段,表示导致变更的原因,可能值如下: autoplay 自动播放导致 swip...

    企鹅号小编
  • TCP协议详解-滑动窗口

    TCP协议作为基本的传输控制协议,提供了面向连接的、可靠的通信机制。由于其优越的特性,被广泛应用于网络通信中,成为了今天互联网的基石。其为了屏蔽网络底层种种复杂...

    无毁的湖光-Al
  • Chrome浏览器安装CRX格式的插件

    以安装Chrome浏览器的插件Scratch JS为例: (1)下载Scratch JS插件 Scratch JS插件下载地址: http://www.c...

    魏晓蕾
  • IDEA 下单程序多端口不同配置独立运行

    idea 的小朋友们,分布式集群程序开发时,怎么办呢?我们希望在开发环境下,单个程序能够运行在不同端口上,使用不同的配置,以此达到分布式部署的运行测试,怎么办呢...

    酒馆丁老师
  • 抓包分析 TCP 建立和断开连接的流程

    HTTP 协议是基于 TCP 协议的。大家都知道发送 HTTP 报文需要首先建立客户端和服务端之间的 TCP 连接。TCP 三次握手建立连接,四次挥手断开连接,...

    JS菌

扫码关注云+社区

领取腾讯云代金券