精华内容
下载资源
问答
  • 传输层

    千次阅读 2017-12-02 18:58:51
    传输层概述:传输层向上面的应用层提供通信服务,属于面向通信部分的最高层,也是用户功能中的最底层。传输层位相互通信的应用进程提供了逻辑通信。 应用进程之间的通信:两个主机进行通信实际上就是两个主机中的...

    传输层概述:

    传输层向上面的应用层提供通信服务,属于面向通信部分的最高层,也是用户功能中的最底层。传输层位相互通信的应用进程提供了逻辑通信。
    这里写图片描述

    应用进程之间的通信:

    传输层负责主机的应用进程之间的通讯。

    主机中有很多应用进程,而主机之间的通信实际上是主机的应用进程之间的通信(应用进程之间的通信又称为端到端的通信。)。例如QQ聊天,实际上是2台主机中QQ这个应用进程在进行通讯。

    网际层负责主机到主机之间的通讯。

    主机之间的通讯又称为点到点的通讯。

    对端到端通讯的理解

    以快递为例来说明网际层和传输层的区别,假设物流公司在A小区和B小区都设立了邮寄点,现在位于A小区的小佳需要给B小区的小丽邮寄一个物品,小佳首联系快递小哥上门取件,快递小哥将物品送到A小区的邮寄点邮寄,邮件经过运输到达了B小区的邮寄点,负责B小区快递的快递小哥将邮件送到小丽的手中。
    在这个例子中,邮件从A小区的邮寄点到B小区的邮寄点对应网络中主机到主机的通讯。小佳寄件给小丽则是端到端的通讯。
    网络层负责将数据送到小区(小区对应于主机),而小区中有很多人(人对应于主机中的进程),那么就需要让传输层来将数据送到收件人手中。

    传输层的功能:

    复用和分用

    上面的例子中谈到了,小区中有很多人,这些人都共用小区的邮寄点来邮寄物品,这就涉及到了复用,而邮寄点往小区里送件则是分用。所以传输层一个很重要的功能就是复用和分用。应用层不同进程的报文通过不同端口向下交到传输层,再往下就共用网络层提供的服务这是复用。传输层收到网络层的数据,根据端口的不同提交给不同的应用层进程,这是分用

    具体功能:

    1. 传输层是为应用进程之间提供端到端的逻辑通信 ( 网络层是为主机之间提供逻辑通信)。

    2. 传输层要对收到的报文进行差错检测

    3. 传输层需要两种不同的运输协议,即面向连接的用户数据报协议TCP(Transmission Control Protocol)和无连接的传输控制协议UDP(User Datagram Protocol)。

    下面提一下差错检测,在数据链路层有三个基本问题:封装成帧,透明传输,差错检测,所以在数据链路层就包含了差错检测;而网际层的IP数据包格式中也有校验和字段。那么为什么在传输层还要进行差错检测?

    • IP数据包格式中的校验和是只进行了首部的校验,并没有对数据部分的校验,所以传输层需要对首部和数据都进行校验
    • 数据链路层的差错检测只能保证无bit差错,而传输层的差错检测保证无传输差错
      所谓无比特差错,说的是数据bit没有差错,既然每一位数据都没有差错,这不就保证了传输的数据是没错的了吗?
      其实不然,无比特差错只是保证了你收到的数据是没有差错的,而无法保证发送方发送什么,接收方就接受什么这个要求的。
      比如发送方发送A B C3个数据,接收方可能收到的数据出现下面的情况
    • 丢失: A C
    • 重复: A B B C
    • 失序 A C B
      收到的数据都没有错误,但是接收方接受的不是发送方发送的A B C,发生了传输差错
      所以需要传输层进行差错检测来确保无传输差错。
      那么问题又来了 为什么不在下层就直接确保无传输差错,而是要等到传输层?在下层发生错误直接处理不是更快吗?
      简单讲一下数据在网络中的传输过程,传输层的报文经过网际层的时候可能会分片,将一个报文分成几段数据封装到IP数据包中,然后这几个IP数据包经过不同的路由到达目的主机,在目的主机中将这些分片的数据包解封装再进行组装,还原成数据报交给上层应用层。
      从这个过程中,你可以发现,想要在下层直接实现无传输差错是很困难的,因为这要求属于一个数据报的几个IP数据包需要经过同一条路由,而且需要在每个路由器都组装一次,然后在分片发送,这是很浪费资源的。

    TCP和UDP的简述:

    1、数据单位

    运输协议数据单元TPDU(Transport Protocol Data Unit):两个对等运输实体在通信时传送的数据单元。

    TCP报文段(segment):TCP传送的数据单位协议。

    UDP报文(or用户数据报):UDP传送的数据单位协议。

    2、主要区别:

    a、UDP:在传送数据之前不需要先建立连接。对方的传输层再上到UDP报文后,不需要给出任何确认。虽然UDP不替考可靠服务,但在某些情况下UDP是一种最有效的工作方式。

    b、TCP:TCP则提供面向连接的服务。TCP不提供广播or多播服务。由于TCP需要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销。这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。

    端口:

    端口的概念:

    传输层TCP和UDP数据结构中的一个字段。以银行为例,每个窗口就是一个“端口”,处理不同的业务,有的窗口处理存取钱,有的处理挂失,有的处理贷款,还有的给VIP窗口等等。再以之前的快递为例,每一个小区的每一个人就可以视为一个端口,当然你也可以把每个人的房子视为一个端口,毕竟快递小哥送快递都是送到家的,因为房子是固定的,而人是移动的。这就体现了地址不变在通讯中的重要,而不变的地址在网络通讯中就是MAC地址。

    端口用一个16bit端口号进行标志。端口号只具有本地意义,在网络传输过程中无意义,即端口号只是为了标志本计算机应用层中的各进程。在因特网中不同计算机相同端口号是没有联系的。

    端口的作用:让应用层的各种应用进程都能将其数据通过端口向下交付给传输层,以及让传输层知道应将其报文段中的数据向上通过端口交付给应用层相应的进程。从这个意义上讲,端口是用来标志应用层的进程。
    这里写图片描述

    三类端口:

    1. 服务器使用的端口
      1. 熟知端口,数值一般是0 ~ 1023。当一种新的应用程序出现时,必须为它指派一个熟知端口。一般不支持用户自定义。
      2. 登记端口,1024 ~ 49151。为没有数值端口的应用进程提供的。

    2. 客户端使用的端口号
      + 也叫短暂端口号,49152 ~ 65535,动态分配的

    注1:端口号范围:0 ~ 65535;熟知端口号:0 ~ 1024;用户自定义端口号:大于1023。

    注2:0~1023端口在Linux下,只有root可以启动,其他用户没有权限。

    这里写图片描述

    网络中socket的概念:

    TCP使用“连接”(而不仅仅是“端口”)作为最基本的抽象,同时将TCP连接的端点称为插口(socket)or套接字or套接口。

    socket和端口、IP的关系:

    socket的组成为目的IP、源IP、目的端口号、源端口号、协议类型(TCPorUDP)。

    注:socket的多种不同意思:(以下是编程中的socket)

    1、应用编程接口API成为socketAPI,简称socket;

    2、socketAPI中使用的一个函数名也叫作socket;

    3、调用socket函数的端点成为socket;

    4、调用socket函数时其返回值成为socket描述符,简称socket;

    5、在操作系统内核中联网协议的Berkele实现,称为socket实现。
    这里写图片描述

    展开全文
  • 传输层协议

    千次阅读 2018-10-20 21:53:56
    传输层 1 传输层协议 网络层只把分组发送到目的主机,但是真正通信的并不是主机而是主机中的进程。传输层提供了进程间的逻辑通信,传输层向高层用户屏蔽了下面网络层的核心细节,使应用程序看起来像是在两个传输层...

    传输层

    1 传输层协议

    网络层只把分组发送到目的主机,但是真正通信的并不是主机而是主机中的进程。传输层提供了进程间的逻辑通信,传输层向高层用户屏蔽了下面网络层的核心细节,使应用程序看起来像是在两个传输层实体之间有一条端到端的逻辑通信信道。

    传输层主要协议:UDP、TCP

    UDP 和 TCP 的特点

    用户数据报协议 UDP(User Datagram Protocol)是无连接的,尽最大可能交付,没有拥塞控制,面向报文(对于应用程序传下来的报文不合并也不拆分,只是添加 UDP 首部),支持一对一、一对多、多对一和多对多的交互通信。
    
    传输控制协议 TCP(Transmission Control Protocol)是面向连接的,提供可靠交付,有流量控制,拥塞控制,提供全双工通信,面向字节流(把应用层传下来的报文看成字节流,把字节流组织成大小不等的数据块),每一条 TCP 连接只能是点对点的(一对一)。
    

    2 UDP 首部格式

    首部字段只有 8 个字节,包括源端口、目的端口、长度、检验和。12 字节的伪首部是为了计算检验和临时添加的。

    3 TCP 首部格式

    TCP报文段首部的前20个字节是固定的,后面有4N字节是根据需要而增加的选项。因此TCP报文段的最小长度为20个字节。

    首部固定部分的各字段的意义如下:

    1. 源端口和目的端口:加上IP首部的源IP地址和目的IP地址,确定唯一的一个TCP连接。另外通过目的端口来决定TCP将数据报交付于那个应用程序,从而实现TCP的分用功能。

    2. 序号:占4个字节,序号的范围为[0,4284967296]。由于TCP是面向字节流的,在一个TCP连接中传送的字节流中的每一个字节都按顺序编号,首部中的序号字段则是指本报文段所发送的数据的第一个字节的序号。另外,序号是循环使用的,当序号增加到最大值时,下一个序号就又回到了0。

    3. 确认号:当ACK标志位为1时有效,表示期望收到的下一个报文段的第一个数据字节的序号。确认号为N,则表明到序号N-1为止的所有数据字节都已经被正确地接收到了。

    4. 头部长度:TCP报文段的头部长度,它指出TCP报文段的数据部分的起始位置与TCP报文段的起始位置的距离。头部长度占4个字节,但它的单位是32位字,即以4字节为计算单位,因此头部长度的最大值为15*4=60个字节,这就意味着选项的长度不超过40个字节。

    5. 保留位:必须为0.

    6. 下面的六个控制位说明报文段的性质

    1)URG:与首部中的紧急指针字段配合使用。URG为1时,表明紧急指针字段有效,发送应用进程告诉发送方的TCP有紧急数据要传送,于是发送方TCP就把紧急数据插入到本报文段数据的最前面,而其后面仍是普通数据。

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

    3)PSH:如果发送的报文段中PSH为1,则接收方接受到该报文段后,直接将其交付给应用进程,而不再等待整个缓存都填满后再向上交付。

    4)RST:复位标志,RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后重新建立运输连接。

    5)SYN:同步序号,用来发起一个连接。当SYN=1而ACK=0时,表明这是一个连接请求报文段,若对方同意建立连接,则应在响应的报文段中使SYN=1和ACK=1。

    6)FIN:用来释放一个连接。当FIN=1时,表明此报文段的发送方的数据已发送完毕,并要求释放连接。

    1. 窗口:接收方让发送方下次发送报文段时设置的发送窗口的大小。

    2. 校验和:校验的字段范围包括首部和数据这两部分。

    3. 紧急指针:紧急指针当URG=1时才有效,它指出本报文段中的紧急数据的字节数。值得注意的是,即使窗口为0时,也可发送紧急数据。

    4. 选项与填充:选项应该为4字节的整数倍,否则用0填充。最常见的可选字段是最长报文大小MSS(Maximum Segment Size),每个连接方通常都在通信的第一个报文段中指明这个选项。它指明本端所能接收的最大长度的报文段。该选项如果不设置,默认为536(20+20+536=576字节的IP数据报),其中ip首部和tcp首部各20个字节,而internet 上标准的MTU (最小)为576B。

    3. TCP 的三次握手

    假设 A 为客户端,B 为服务器端。

    首先 B 处于 LISTEN(监听)状态,等待客户的连接请求。

    A 向 B 发送连接请求报文,SYN=1,ACK=0,选择一个初始的序号 x。

    B 收到连接请求报文,如果同意建立连接,则向 A 发送连接确认报文,SYN=1,ACK=1,确认号为 x+1,同时也选择一个初始的序号 y。

    A 收到 B 的连接确认报文后,还要向 B 发出确认,确认号为 y+1,序号为 x+1。

    B 收到 A 的确认后,连接建立。

    三次握手的原因

    第三次握手是为了防止失效的连接请求到达服务器,让服务器错误打开连接。

    客户端发送的连接请求如果在网络中滞留,那么就会隔很长一段时间才能收到服务器端发回的连接确认。客户端等待一个超时重传时间之后,就会重新请求连接。但是这个滞留的连接请求最后还是会到达服务器,如果不进行三次握手,那么服务器就会打开两个连接。如果有第三次握手,客户端会忽略服务器之后发送的对滞留连接请求的连接确认,不进行第三次握手,因此就不会再次打开连接。

    4. TCP 的四次挥手

    以下描述不讨论序号和确认号,因为序号和确认号的规则比较简单。并且不讨论 ACK,因为 ACK 在连接建立之后都为 1。

    A 发送连接释放报文,FIN=1。

    B 收到之后发出确认,此时 TCP 属于半关闭状态,B 能向 A 发送数据但是 A 不能向 B 发送数据。

    当 B 不再需要连接时,发送连接释放报文,FIN=1。

    A 收到后发出确认,进入 TIME-WAIT 状态,等待 2 MSL(最大报文存活时间)后释放连接。

    B 收到 A 的确认后释放连接。


    四次挥手的原因

    客户端发送了 FIN 连接释放报文之后,服务器收到了这个报文,就进入了 CLOSE-WAIT 状态。这个状态是为了让服务器端发送还未传送完毕的数据,传送完毕之后,服务器会发送 FIN 连接释放报文。

    TIME_WAIT

    客户端接收到服务器端的 FIN 报文后进入此状态,此时并不是直接进入 CLOSED 状态,还需要等待一个时间计时器设置的时间 2MSL。这么做有两个理由:

    确保最后一个确认报文能够到达。如果 B 没收到 A 发送来的确认报文,那么就会重新发送连接释放请求报文,A 等待一段时间就是为了处理这种情况的发生。

    等待一段时间是为了让本连接持续时间内所产生的所有报文都从网络中消失,使得下一个新的连接不会出现旧的连接请求报文。

    5 客户端、服务端状态变更

    客户端状态变更


    服务端状态变更

    6. TCP 的性质

    6.1 TCP 可靠传输

    TCP 使用超时重传来实现可靠传输:如果一个已经发送的报文段在超时时间内没有收到确认,那么就重传这个报文段。

    一个报文段从发送再到接收到确认所经过的时间称为往返时间 RTT,加权平均往返时间 RTTs 计算如下:

    其中 RTTd 为偏差。

    6.2 交互数据流和成块数据流

    交互数据类型,如:Telnet,这类协议一般只做小流量的数据交换,比如每按下一个键,要回显一些字符。

    成块数据类型,如:FTP,这类协议需要传输的数据比较多,一般传输的数据量比较大。

    6.2.1 交互数据流

    针对交互性要求比较高的应用,每发送一个字节到服务端,并回显到客户端的过程如下:

    1. 客户端产生一个41bit长的报文(20字节的IP首部,20字节的TCP首部,1字节的数据),发送到服务端;

    2. 服务端发送过来一个40bit的确认报文;

    3. 服务端发送回显的字符,报文长为41bit;

    4. 客户端发送确认报文,报文长为40bit。

    如果在局域网中,通常不会有什么麻烦,因为局域网一般不会出现拥塞,但在广域网中,这些小分组则会增加网络拥塞出现的可能。为了提高这类数据的发送效率和降低网络负担,TCP采用了两种策略:捎带ACKNagle算法

    捎带 ACK :
       捎带ACK的意思是,当接收端接收到TCP报文段后,并不立即发送ACK报文,而是等上一段时间,如果这段时间里该主机有数据要发送到远程主机,就将该数据捎带上ACK一起发送过去,很明显,这样可以减少传输开销。为了防止产生超时重传,绝大多数情况下,这个等待时间为200ms,超过了200ms,如果没有数据要一起发送,就直接发送ACK报文。

    捎带ACK的策略一般也只有在交互性比较高的应用中才会使用,对于成块数据流,一般大多数应用程序不会同时在两个方向上发送数据。

    Nagle算法
      该算法的重点是要求在TCP连接上组多只能有一个未被确认的数据报在传输。算法的大致思路如下:应用程序把要发送的数据逐个字节地从到TCP的发送缓存,发送方把前面的一部分数据先发送出去,并把后面到达的字节继续缓存起来,当发送方收到前面字节的确认后,再把发送缓冲中的所有数据组装成一个报文段发送出去,同时继续对随后到来的数据进行缓存。只有收到前一个报文段的确认后才能继续发送下一个报文段。另外,Nagle算法还规定,当发送缓存中的数据已达到发送窗口大小的一半或已达到报文段的MSS值时,就立即发送一个报文段。
      当数据到达较快而网络速率较慢时,用这种方法可明显地减少所用的网络带宽。很明显,该算法也是专门为交互性高的应用而设计的,对于成块数据流,如果每收到一次确认才能发送下一个报文段,那么传输速率就会很低。

    6.2.2 成块数据流

    对于一些数据吞吐量要求较高的应用,总是希望每次发送尽可能多的数据到主机,对于这类应用,TCP使用滑动窗口协议,该协议允许发送方在停止发送前和等待确认前可以连续发送多个分组,因此可以加速数据的传输。

    滑动窗口

    滑动窗口的滑动是以字节为单位的,发送方A和接收方B在TCP三次握手的前两次握手时协商好了发送窗口和接受窗口的大小,发送方A根据B发送来的确认连接报文中标明的窗口的大小,来确定收到确认前的最大发送数据量,如果A接收到的B发来的确认报文中标明的窗口大小为0,则停止发送数据,直到收到不为0的确认报文,再继续发送。发送窗口表示在没有收到B的确认的情况下,A可以连续把窗口内的数据都发送出去,凡是已发送过的数据,在没有收到确认前都要暂时保留,以便超时重传时使用。

    需要注意的一点是:使用TCP滑动窗口协议时,接收方不必确认每一个收到的分组,在TCP中,ACK确认是累积的,可以在接收到几个序号连续的报文段后只发送一个ACK确认报文,但累积等待的时间最长不能超过0.5秒,以防止发送端超时重传。

    另外,要注意滑动窗口的三种变化:

    1. 窗口合拢。窗口左边沿向右边沿靠近,这种情况发生在数据被发送后收到确认时;

    2. 窗口张开。窗口右边沿向右移动,说明允许发送更多的数据,这种情况发生在另一端的接收进程从TCP接收缓存中读取了已经确认的数据时;

    3. 窗口收缩。窗口右边沿向左移动,一般很少发生,RFC也强烈不建议这么做,因为很可能会产生一些错误,比如一些数据已经发送出去了,又要收缩窗口,不让发送这些数据。

    另外,窗口的左边沿是肯定不可能左移的,如果接收到一个指示窗口左边沿向左移动的ACK,则它被认为是一个重复ACK,并被丢弃。

    总结以下几点:

    1. 发送方不必发送一个全窗口大小的数据,一次发送一部分即可。

    2. 窗口的大小可以减小,但是窗口的右边沿却不能向左移动。

    3. 接收方在发送一个ACK前不必等待窗口被填满。

    4. 窗口的大小是相对于确认序号的,收到确认后的窗口的左边沿从确认序号开始。

    发送接收缓冲区

    1. 缓冲空间和序号空间都是有限的,并且都是循环使用的。

    2. 窗口大小一定不大于收发缓冲区的大小

    3. 发送缓冲区用来暂存发送方准备发送的TCP报文段和已发送但尚未收到确认的数据。

    4. 接收缓冲区用来暂按序到达但尚未被上层应用程序读取的数据合未按序到达的数据。

    6.3 四大定时器

    对于每个TCP连接,TCP一般要管理4个不同的定时器:重传定时器坚持定时器保活定时器2MSL定时器

    6.3.1 重传定时器

    很明显重传定时器是用来计算TCP报文段的超时重传时间的(至于超时重传时间的确定,这里涉及到一大堆的算法,书上有说,我这里不细谈了)。每发送一个报文段就会启动重传定时器,如果在定时器时间到后还没收到对该报文段的确认,就重传该报文段,并将重传定时器复位,重新计算;如果在规定时间内收到了对该报文段的确认,则撤销该报文段的重传定时器。

    6.3.2 坚持定时器

    上篇文章中已经提到了,主要是为了应付零窗口大小通知可能导致的死锁问题。如果接收端在向发送端发送了零窗口报文段后不久,接收端的接收缓存又有了一些存储空间,于是接收端向发送端发送了一个非零窗口大小的报文段,然而这个报文段在传送过程中丢失了,发送端没有收到该报文段,就一直等待接收端发送非零窗口的报文通知,而接收端并不知道报文段丢失了,而是觉得已经告诉发送端了,就会一直等待发送端发送数据,如果没有任何措施的话,这话死锁的局面会一直延续下去。

    为了解决这个问题,TCP为每一个连接设有一个坚持定时器(也叫持续计数器)。只要TCP连接的一方收到对方的零窗口通知,就启动坚持定时器。若坚持定时器设置的时间到期,就发送一个零窗口控测报文段(该报文段只有一个字节的数据,它有一个序号,但该序号永远不需要确认,因此该序号可以持续重传),之后会出现以下三种情况:

    1. 对方在收到探测报文段后,在对该报文段的确认中给出现在的窗口值,如果窗口值仍未零,则收到这个报文段的一方将坚持定时器的值加倍并重启。坚持计数器最大只能增加到约60秒,在此之后,每次收到零窗口通知,坚持计数器的值就定位60秒。

    2. 对方在收到探测报文段后,在对该报文段的确认中给出现在的窗口值,如果窗口不为零,那么死锁的僵局就被打破了。

    3. 该探测报文发出后,会同时启动重传定时器,如果重传定时器的时间到期,还没有收到接收到发来的响应,则超时重传探测报文。

    6.3.3 保活定时器

    保活定时器是为了应对两个TCP连接间出现长时间的没有数据传输的情况。如果客户已与服务器建立了TCP连接,但后来客户端主机突然故障,则服务器就不能再收到客户端发来的数据了,而服务器肯定不能这样永久地等下去,保活定时器就是用来解决这个问题的。服务器每收到一次客户端的数据,就重新设置保活定时器,通常为2小时,如果2小时没有收到客户端的数据,服务端就发送一个探测报文,以后每隔75秒发送一次,如果连续发送10次探测报文段后仍没有收到客户端的响应,服务器就认为客户端出现了故障,就可以终止这个连接。

    #### 6.3.4 2MSL定时器

    2MSL定时器测量一个连接处于TIME—WAIT黄台的时间,通常为2MSL(报文段寿命的两倍)。2MSL定时器的设置主要是为了确保发送的最后一个ACK报文段能够到达对方,并防止之前与本连接有关的由于延迟等原因而导致已失效的报文被误判为有效。

    6.4 TCP 滑动窗口

    窗口是缓存的一部分,用来暂时存放字节流。发送方和接收方各有一个窗口,接收方通过 TCP 报文段中的窗口字段告诉发送方自己的窗口大小,发送方根据这个值和其它信息设置自己的窗口大小。

    发送窗口内的字节都允许被发送,接收窗口内的字节都允许被接收。如果发送窗口左部的字节已经发送并且收到了确认,那么就将发送窗口向右滑动一定距离,直到左部第一个字节不是已发送并且已确认的状态;接收窗口的滑动类似,接收窗口左部字节已经发送确认并交付主机,就向右滑动接收窗口。

    接收窗口只会对窗口内最后一个按序到达的字节进行确认,例如接收窗口已经收到的字节为 {31, 34, 35},其中 {31} 按序到达,而 {34, 35} 就不是,因此只对字节 31 进行确认。发送方得到一个字节的确认之后,就知道这个字节之前的所有字节都已经被接收。

    6.5 TCP 流量控制

    一般来说,我们总是希望数据传输的更快一些,但如果发送方把数据发送的很快,而接收方来不及接收,这就可能造成数据的丢失。流量控制就是让发送方的发送速率不要太快,让接收方来得及接收。

    接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。将窗口字段设置为 0,则发送方不能发送数据。

    6.6 TCP 拥塞控制

    如果网络出现拥塞,分组将会丢失,此时发送方会继续重传,从而导致网络拥塞程度更高。因此当出现拥塞时,应当控制发送方的速率。这一点和流量控制很像,但是出发点不同。流量控制是为了让接收方能来得及接收,而拥塞控制是为了降低整个网络的拥塞程度

    TCP 主要通过四个算法来进行拥塞控制:慢开始、拥塞避免、快重传、快恢复

    名词

    rwnd	滑动窗口
    cwnd 拥塞窗口
    ssthresh 慢启动门限
    MMS 最大报文段
    RRT 往返时间
    

    发送方需要维护一个叫做拥塞窗口(cwnd)的状态变量,注意拥塞窗口与发送方窗口的区别:拥塞窗口只是一个状态变量,实际决定发送方能发送多少数据的是发送方窗口。

    为了便于讨论,做如下假设:

    接收方有足够大的接收缓存,因此不会发生流量控制;
    虽然 TCP 的窗口基于字节,但是这里设窗口的大小单位为报文段。

    1. 慢开始与拥塞避免

    发送的最初执行慢开始,令 cwnd = 1,发送方只能发送 1 个报文段;当收到确认后,将 cwnd 加倍,因此之后发送方能够发送的报文段数量为:2、4、8 …(*慢启动, cwnd = 2)

    注意到慢开始每个轮次都将 cwnd 加倍,这样会让 cwnd 增长速度非常快,从而使得发送方发送的速度增长速度过快,网络拥塞的可能性也就更高。设置一个慢开始门限 ssthresh,当 cwnd >= ssthresh 时,进入拥塞避免,每个轮次只将 cwnd 加 1。(当cwnd < ssthresh时,*2,否则 +1 )

    如果出现了超时,则令 ssthresh = cwnd / 2,然后重新执行慢开始。

    1. 快重传与快恢复

    快重传算法首先要求接收方每收到一个失序的报文段后就立即发出重复确认(重复发送对前面有序部分的确认),而不是等待自己发送数据时才进行稍待确认,也不是累积收到的报文发送累积确认,如果发送方连续收到三个重复确认,就应该立即重传对方未收到的报文段(有收到重复确认,说明后面的报文段都送达了,只有中间丢失的报文段没送达)。

    在接收方,要求每次接收到报文段都应该对最后一个已收到的有序报文段进行确认。例如已经接收到 M1 和 M2,此时收到 M4,应当发送对 M2 的确认。
    在发送方,如果收到三个重复确认,那么可以知道下一个报文段丢失,此时执行快重传,立即重传下一个报文段。例如收到三个 M2,则 M3 丢失,立即重传 M3。
    在这种情况下,只是丢失个别报文段,而不是网络拥塞。因此执行快恢复,令 ssthresh = cwnd / 2 ,cwnd = ssthresh,注意到此时直接进入拥塞避免。

    慢开始和快恢复的快慢指的是 cwnd 的设定值,而不是 cwnd 的增长速率。慢开始 cwnd 设定为 1,而快恢复 cwnd 设定为 ssthresh。


    问题1】为什么连接的时候是三次握手,关闭的时候却是四次握手?
    答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,“你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

    问题2】为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?

    1. 为了保证A发送的最后一个ACK报文段能够到达B。该ACK报文段很有可能丢失,因而使处于在LAST—ACK状态的B收不到对已发送的FIN+ACK报文段的确认,B可能会重传这个FIN+ACK报文段,而A就在这2MSL时间内收到这个重传的FIN+ACK报文段,接着A重传一次确认,重新启动2MSL计时器,最后A和B都进入CLOSED状态。如果A在TIME—WAIT状态不等待一段时间就直接释放连接,到CLOSED状态,那么久无法收到B重传的FIN+ACK报文段,也就不会再发送一次确认ACK报文段,B就无法正常进入CLOSED状态。
       2. 防止已失效的请求连接出现在本连接中。在连接处于2MSL等待时,任何迟到的报文段将被丢弃,因为处于2MSL等待的、由该插口(插口是IP和端口对的意思,socket)定义的连接在这段时间内将不能被再用,这样就可以使下一个新的连接中不会出现这种旧的连接之前延迟的报文段。

    补充:
       当客户端执行主动关闭并进入TIME—WAIT是正常的,服务端执行被动关闭,不会进入TIME—WAIT状态,这说明,如果终止了一个客户程序,并立即重启该客户程序,则新的客户程序将不再重用相同的本地端口,而是使用新的端口,这不会带来什么问题,因为客户端使用本地端口,而并不关心这个端口是多少。但对于服务器来说,情况就不同了,服务器总是用我们熟知的端口,那么在2MSL时间内,重启服务器就会出错,为了避免这个错误,服务器给出了一个平静时间的概念,这是说在2MSL时间内,虽然可以重新启动服务器,但是这个服务器还是要平静的等待2MSL时间的过去才能进行下一次连接。

    问题三】TCP和UDP的优缺点及区别

    TCP的优点: 可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。

    TCP的缺点: 慢,效率低,占用系统资源高,易被攻击 TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU、内存等硬件资源。 而且,因为TCP有确认机制、三次握手机制,这些也导致TCP容易被人利用,实现DOS、DDOS、CC等攻击。

    UDP的优点: 快,比TCP稍安全 UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制,UDP是一个无状态的传输协议,所以它在传递数据时非常快。没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些。但UDP也是无法避免攻击的,比如:UDP Flood攻击

    UDP的缺点: 不可靠,不稳定 因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。 基于上面的优缺点,那么: 什么时候应该使用TCP: 当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议。 在日常生活中,常见使用TCP协议的应用如下: 浏览器,用的HTTP FlashFXP,用的FTP Outlook,用的POP、SMTP Putty,用的Telnet、SSH QQ文件传输

    什么时候应该使用UDP: 当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用UDP。 比如,日常生活中,常见使用UDP协议的应用如下: QQ语音 QQ视频 TFTP ……

    有些应用场景对可靠性要求不高会用到UPD,比如长视频,要求速率

    TCP与UDP的区别

    1. 基于连接与无连接;
    2. 对系统资源的要求(TCP较多,UDP少);
    3. UDP程序结构较简单;
    4. 流模式与数据报模式 ;
    5. TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。

    问题四】 为什么一定要进行三次握手?

    前两次的握手很显然是必须的,主要是最后一次,即客户端收到服务端发来的确认后为什么还要想服务端再发送一次确认呢?这主要是为了防止已失效的请求报文段突然又传送到了服务端而产生连接的误判。
    考虑如下的情况:客户端发送了一个连接请求报文段到服务端,但是在某些网络节点上长时间滞留了,而后客户端又超时重发了一个连接请求报文段该服务端,而后正常建立连接,数据传输完毕,并释放了连接。如果这时候第一次发送的请求报文段延迟了一段时间后,又到了服务端,很显然,这本是一个早已失效的报文段,但是服务端收到后会误以为客户端又发出了一次连接请求,于是向客户端发出确认报文段,并同意建立连接。假设不采用三次握手,这时服务端只要发送了确认,新的连接就建立了,但由于客户端比你更没有发出建立连接的请求,因此不会理会服务端的确认,也不会向服务端发送数据,而服务端却认为新的连接已经建立了,并在一直等待客户端发送数据,这样服务端就会一直等待下去,直到超出保活计数器的设定值,而将客户端判定为出了问题,才会关闭这个连接。这样就浪费了很多服务器的资源。而如果采用三次握手,客户端就不会向服务端发出确认,服务端由于收不到确认,就知道客户端没有要求建立连接,从而不建立该连接。

    展开全文
  • TCP/IP传输层原理详解

    千次阅读 2019-01-27 10:10:36
    看完TCP/IP传输层完了之后,感觉对传输层的认识还是比较零散,现在就将这块的内容进行比较系统的总结. 传输层协议具有代表性的是TCP协议和UDP协议,TCP是一种可靠的,安全的,通信之前必须建立连接,才能实现数据传送的...
    看完TCP/IP传输层完了之后,感觉对传输层的认识还是比较零散,现在就将这块的内容进行比较系统的总结.

    传输层协议具有代表性的是TCP协议和UDP协议,TCP是一种可靠的,安全的,进行数据通信之前必须建立连接,才能实现数据传送的传输层协议,时效性弱.UDP是一种不可靠,通信之前不需建立连接就可传输数据的传输协议,时效性强.对于两种协议在网络数据传输中各占春秋,没有谁优谁劣区分.


    • 传输层
      ISO协议图
      在这里插入图片描述

    传输层是ISO协议的第四层协议,实现端对端(即发送端主机应用对接收端主机应用)的数据传输.对IP层(不可靠,无连接的一个层)传来的数据进行整理,按照其上一层期望的格式整理好后根据指定的端口,发送给应用.传输层要实现数据传输需要两端的主机设置的协议号相同;两端主机的IP用来确定计算机的网络地址;两端主机进行通信的应用端口号,能确定发收端计算机上进行通信的具体应用程序.我们可以用送快递这个例子来模拟网络上的数据传输:

    邮递员IP根据收件人地址(目的IP)向目的地(目标计算机)投递包裹(数据信息),包裹到达目的地以后,由对方(传输层协议)根据包裹信息(目的端口号)确定最终的收件人(接收端的应用).


    • TCP协议和UDP协议
    • TCP是面向连接的可靠的传输控制流协议,只有进行三次握手建立连接后,才能进行数据的通信,四次挥手释放连接.TCP为提供可靠的传输,实行"顺序控制"和"重发控制"机制,还有"流量控制",“拥塞控制”,提高网络利用率等功能,只能实现一对一的通信.
    • UDP是不具有可靠性的数据报协议.不建立连接,数据到达对端传输层后一些细微的处理他会交给应用层去完成,传输层只是单纯实现了传输数据的功能而已,因为它没有像TCP那样对数据不仅实现传输还要做额外的各种处理工作,所以比较高速.他能实现一对一传输也可以实现一对多的数据传输.
    • 对于以上这两者的用途我们要按需使用,TCP确实可靠,但是在一些应用场景下对可靠传输的要求不高的情况下,UDP协议具有更好的实时性,工作效率要比TCP高.同时,UDP的段结构要比TCP的段结构简单,能降低网络开销.

    • 端口号

    数据链路中的Mac地址和IP地址分别确定不同的计算机和TCP/IP网络中互连的主机和路由器.在传输层中也有类似的地址概念,就是端口号,用来识别同一台计算机中进行通信的不同应用程序,也可以认为是程序地址.
    一台计算机中有很多的应用程序,像QQ,微信,web浏览器等,就像是QQ上向对方计算机发的消息不会在对方微信中提醒一样(假设对方微信和QQ都在运行),因为在传输层已经进行了端口识别这一步,才能使消息准确到达对端指定进程中.
    总的来说,计算机之间的数据通信,就是建立在IP地址,端口号,协议号上进行的.


    • TCP的特点及目的

    TCP通过校验和,序列号,确认应答,重发控制,连接管理以及窗口控制等实现可靠性传输.

    • TCP校验和是一个端到端的校验和,由发送端计算,然后由接收端验证。其目的是为了发现TCP首部和数据在发送端到接收端之间发生的任何改动。如果接收方检测到校验和有差错,则TCP段会被直接丢弃。
    • 通过序列号和确认应答提高可靠性
    • 数据重发超时控制:在重发数据之前,等待确认应答到来的那段时间间隔.如果超过了那个时间,发送端将对数据进行重新发送.当被发送之后,还是收不到应答就再次被发送,等待确认应答的时间也会相对于上一次以2的指数次方倍延长,即就是第二次相对于第一次等待时间是2倍,第三次相对于第二次是4倍,之后以此类推.当然不会被无限制的重发,达到一定次数之后还收不到确认应答就会被判断为对端主机或网络发生异常,前置关闭连接.并通知应用程序强行终止此连接.
    • 连接管理:
      即建立连接的三次握手
      1.客户端向服务端发送SYN请求建立连接,2.服务端对于客户的请求做了ACK确认应答,以及服务端的SYN建立连接请求,3.客户端对服务端的ACK回应,这三部曲缺一不可,否则建立连接失败,无法传送数据.
      断开连接的四次挥手
      1.A端断开连接的FINAL请求 -> B端,2.B端对于这一请求的ACK回应 -> A端,3.B端再发FINAL断开连接请求 -> A端,4.A端ACK确认应答 -> B端
    • TCP以段为单位发送数据,在建立连接时,经过三次握手的过程中也确定了通信两端能接受的"最大消息长度"(MSS),即在此过程中互相告知对方自己能够适应的MSS值,最终在两者中选最小的作为传输数据的MSS,最理想的最大消息长度是IP不能分片处理的最大数据长度.
      传输层上层传的数据长度大于MSS值,则以MSS为单位进行数据分段传送,重发也是以MSS为单位进行分段重发.
    • 窗口控制
      在这里插入图片描述
      以上了解到TCP以段为单位发送数据,每发送一个段,必须等到接收方返回确认后再发送下一段否则就重发.这样要是往返时间见较长显然不是很高效,所以TCP提供滑动窗口来解决这一缺陷.
      窗口大小就是无需等待确认应答而可以继续发送数据的最大值.这个有点抽象,我们就下图而言,滑动窗口大小是500,MSS值是100,即在不收到确认消息的情况下每次最大发送5个段的信息,发送端先发送第一段100字节的数据,对端没返回确认信息,还可以继续发第二段100字节,直到发送到第五段100字节的信息,如果一个确认信息都没收到,那么表明达到了滑动窗口的最大值,发送端会对已经发送的500字节数据进行重发.要是收到一个段的确认信息,就将窗口往后移动一个段的长度,同时该段被从缓冲区中清除,已经发送却没收到确认的数据超时的话,继续被重发.如果重发超时的数据长度超出滑动窗口允许的长度,那就表明网络或者连接发生了异常.
      在这里插入图片描述
      可能说的不是很清楚,所以再画添一张图,滑动窗口为3,MSS值为100:
      在这里插入图片描述
      观察上述过程,就不难理解其中的梗了.
      这一机制实现了使用大量的缓冲区,通过对多个段同时进行确认应答的功能.
      收到确认的情况下,将窗口滑动到确认应答中的序列号的位置,这样可以顺序的将多个段同时发送并提高通信性能.

    以上已经介绍了滑动窗口的一点点知识,现在我们就这个话题继续进行深入的思考.

    • 在网上看到滑动窗口和套接字缓冲区的关系这个问题?
      我是这样理解的,二者其实没有什么关系,要是真要个答案的话,根据滑动窗口上面介绍的概念,他是发送端无需等待应答确认而可以继续发送数据的最大值,单位是段(MSS).我把套接字缓冲区假想作滑动窗口进行流量控制的对象,缓冲区中已发送且已收到确认的数据(即就是滑动窗口划过的数据区)将被清出缓冲区,怎么想的呢?还是这个图:在这里插入图片描述
      我们都能看出滑动窗口是图中的虚线大矩形部分,而滑动窗口就在最小的矩形构成的数据数据段组成的数据链(即就是套接字缓冲区)上滑动.

    • 窗口控制和重发控制
    • 在使用窗口控制的情况下,出现数据丢失怎么处理?
      确认应答未能返回或者丢失的情况下,数据已经达到了对端,是不需要重发的,在没有使用窗口控制的情况下,没有收到确认应答的数据都会被重发.使用了窗口控制即使确认应答丢失,也无需重发.
      当发送段连续接收到同一个确认应答时,就会将其对应数据段进行重发.这就是高速重发控制.在这里插入图片描述
    • 流控制:TCP提供一种由接收端决定每次可以接收数据的大小,根据这个大小发送端每次发送过的没收到确认的数据不能超过这个大小,即就是以上所说的窗口大小,重点在后面,当接收端缓冲区溢出时,接收端会将窗口大小调整为更小的值通知给发送端,引起发送端对发送数据流量的控制,这就是TCP的流量控制机制.不难想出,发送端在发送数据期间会时不时检测窗口的变化来得知接收端改变窗口大小的信息.
    • 拥塞控制
      因为网络是一个所有计算机共享的空间,所以有可能因为其他主机之间的通信导致网络拥堵,因为可能会有多个主机共享一个路由器这种情况,路由器的内存是有限的.这时网络上出现拥堵时,即路由器未处理的数据达到内存限度时,不能再容纳发送方的发来的数据了,这时要是不加以控制,再发送一个比较大的数据,那可能就会导致整个网络的瘫痪.
      为了在发送端调节所要发送数据的量,定义了一个叫做拥塞窗口的概念,TCP通过慢启动来调整拥塞窗口的大小,在刚开始将拥塞窗口设置为1MSS,在之后每收到一个确认,窗口就加1,在发送数据包时,对拥塞窗口和接收端的通知的窗口大小进行比较,选最小的窗口发送数据.这样通过接收端的通知和拥塞窗口的调整,就减少了网络拥堵发生的可能.
      随着包的每次往返,拥塞窗口会以2的指数增加,这样剧烈的增长速度也可能导致网络拥堵的发生,为了调整增长速率,设置了阀值,只要拥塞窗口超出了这个阀值,之后每收到一次确认应答,窗口的大小就会按照下面的比例放大拥塞窗口:
      1个数据段的字节数的平方/拥塞窗口(字节)

    拥塞窗口越大,通信的吞吐量变大,再出现网络拥堵时,拥塞窗口快速缩小,吞吐量急剧减小,又再次从低往高的涨,拥塞控制实现了TCP的慢启动,快恢复.使得网络上的数据发送接收能合理的动态变化.


    对于网络传输层的系统总结内容就这么多了,里面要是有些地方说的有漏洞或者不足之处,欢迎读者指出.

    展开全文
  • 传输层 概述

    千次阅读 2020-10-30 17:09:14
    整个网络体系结构,自下而上分为物理层,数据链路层,网络层,传输层,应用层。 数据链路层和物理层合称为网络接口层,这两层使用的是物理地址(MAC地址),上面的网络层,传输层,应用层使用的网络地址(IP地址)。 ...

    目录

    https://blog.csdn.net/weixin_45792450/article/details/109218801


    传输层地位

    整个网络体系结构,自下而上分为物理层数据链路层网络层传输层应用层

    数据链路层和物理层合称为网络接口层,这两层使用的是物理地址(MAC地址),上面的网络层,传输层,应用层使用的网络地址(IP地址)。


    传输层交互

    传输层,上承应用层,下启网络层,主要作用是将上层(应用层)的数据进行处理封装后,递交给下层(网络层),并在此过程中实现一定的网络收发控制(比如网络流量控制)。

    传输层封装后的数据一般称为数据段或者报文段(Segment)

    传输层 vs. 网络层

    • 网络层实现主机之间的逻辑通信,主机到主机通信
    • 传输层实现应用进程之间的逻辑通信,端到端通信,进程到进程的通信
    • 端到端通信,涉及复用(multiplexing)和解分(demultiplexing),类似信道复用

    传输层的协议

    传输层主要有两个协议:TCP,UDP

    TCP协议(Transmission Control Protocol):可靠传输协议,即保证可靠交付报文段

    UDP协议(User Datagram Protocol):不可靠传输协议,即不保证可靠交付报文段


    传输层的逻辑定位

    网络中,不同主机之间可以通过IP地址在网络层进行唯一标识,那么在传输层是如何进行唯一标识呢?换句话说,传输层的数据段是如何准确定位的?

    设A主机IP地址为192.168.3.1,B主机IP地址为192.168.3.2。为区分不同的传输层连接,在IP地址的基础上,划分了端口号,如这两台主机的进程(比如浏览器进程)约定了使用3669端口建立一个TCP连接

    由此便实现了传输层连接(TCP或者UDP)的唯一标识。换句话说,端口是传输层提供区分上层应用进程的手段。报文段也是依据IP地址+端口号实现了准确定位传送。


    进程之间的通信


    TCP协议与UDP协议的对比


    关于端口号的补充

    展开全文
  • 传输层协议、应用层协议

    千次阅读 2018-05-10 00:17:10
    传输层协议、应用层协议一、传输层协议1、传输层概述 (1)传输层的作用 IP层提供点到点的连接 传输层提供端到端的连接 (2)传输层的协议 TCP(Transmission Control Protocol)传输控制协议 可靠的、面向...
  • 传输层总结

    千次阅读 2018-06-08 16:05:25
    传输层作用 传输层实现应用进程间的端到端(end-to-end)通信 向应用层提供通信服务 多路分解与复用 定义 所有应用进程的数据通过传输层传输到IP层,即多路复用; 传输层收到的数据交付给相应的应用进程,即多...
  • 传输层详解

    万次阅读 2016-01-06 19:08:05
    传输层详解 ①理解TCP的封装和工作原理 ②理解UDP的封装和工作原理 ③了解常用的TCP和UDP端口号 ④对TCP和UDP首部能够进行分析   传输层的作用是什么?传输层实现端到端的连接,端到端是什么概念呢?打个...
  • 物理层、数据链路层、网络层、传输层、会话层、表示层、应用层 TCP/IP分层(4层) 网络接口层、网络层、传输层、应用层 五层协议(5层) 物理层、数据链路层、网络层、传输层、应用层 五层结构的概述 应用层:通过...
  • 传输层协议详解

    千次阅读 2020-06-10 21:20:10
    一、传输层的概念和服务 1、传输层的基本概念 传输层负责端到端之间的数据传输控制 传输层依赖于网络层的服务,对应用层提供传输服务 2、传输层的功能 跟踪会话 跟踪源主机和目的主机上应用程序间的每次通信 数据...
  • 4.2 无线传感器网络传输层协议

    千次阅读 2020-06-10 14:51:30
    无线传感器网络传输层协议 作业 解释 UDP 和 TCP 不适合无线传感器网络的原因。 UDP: UDP 采用的是无连接的传输, 虽然能够保证网络的实时性,时延非常小,但其数据丢包率较高,不能保证数据可靠传输,因而不适用...
  • 传输层提供的服务及功能概述2.传输层的寻址与端口(1)端口的作用(2)端口号的分类(3)套接字3.无连接UDP和面向连接TCP服务 1.传输层提供的服务及功能概述 传输层的功能如下: 1)传输层提供应用进程之间的逻辑...
  • 15-传输层协议和应用层协议

    千次阅读 2018-04-28 09:49:32
       PS:针对上一篇tcp协议中说到的端到端服务,这里我们再通过传输层协议和应用层协议之间的关系来加深端到端服务的学习和理解。 1. 传输层协议和应用层层协议的关系   在应用层,我们知道有很多协议,比如...
  • 传输层概述

    千次阅读 2018-04-02 21:06:33
    传输层有两种协议,TCP(可靠)和UDP(不可靠),运输层在应用程序的端点之间传输应用层报文,端到端层面,传输层负责将应用层的数据分段,提供可靠或者不可靠 的传输,还处理了端到端的差错控制和流量控制问题。...
  • 传输层作用概述

    万次阅读 2018-01-16 10:15:46
    我们知道传输层位于网络层之上,网络层提供了主机之间的逻辑通道。那既然已经把一个数据包从一个主机发到另一个主机上面了,为什么还需要传输层呢?这是因为传输层提供了应用进程之间的端-端连接。我们知道一个电脑...
  • 【计算机网络】第五章:传输层

    千次阅读 多人点赞 2020-01-02 23:28:38
    传输层最大数据包是65535字节,而网络层数据最大只有1480字节。所以需要分段,但是只要分段,就有可能丢包,因为网络层不负责可靠传输。所以要求服务器和客户端保持会话,直到数据传输完成。 ->TCP(Transmission ...
  • 应用:负责应用程序之间的数据交流 http协议:超文本传输协议 url:统一资源定位符,在网络中唯一定义一份资源。 完整url组成:协议方案名称://用户名:密码@服务器地址:端口号/请求资源路径?查询字符串#片段标识符 ...
  • 33、传输服务(传输层

    千次阅读 2019-02-15 16:40:08
    传输层架构在网络层提供的服务之上,把数据传递服务从两台计算机之间扩展到了两台计算机上的进程之间,并且服务所需的可靠性程度独立于当前使用的物理网络。传输层为应用层使用网络提供了抽象的模式。在本章我们将...
  • 一、会话 提供的服务可使应用建立和维持会话,并能使会话获得同步。会话使用校验点可使通信会话在通信失效时从校验点继续恢复通信。这种能力对于传送大的文件极为重要。 二、表示 主要作用是为异种机通信...
  • OSI第四层:传输层功能及作用

    万次阅读 2019-01-16 18:16:06
    OSI传输层功能:主要提供端到端的连接方式,传输层主要功能如下: 可靠的传输方式(TCP) 不可靠的传输方式(UDP) 数据包分段 数据段重组 流量控制 数据确认和重传 OSI传输层的作用 端到端通信 端到端:end-to-...
  • 通过应用,浏览器从访问的IP地址解析出默认的端口号80;再用端口号和IP地址与web服务器(我们常说的web是网站服务器)建立一条tcp连接通道,建立TCP连接之后,浏览器向web服务器发送一条HTTP请求报文web服务器响应并...
  • 传输层协议UDP,书上说不必事先建立连接,是无连接的不可靠的协议,只是尽最大努力交付,但UDP仅是传输层协议,下面还有数据链路层协议啊,该层中有超时重传,差错重传的ARQ协议,这样,原始的数据帧就能可靠通信了...
  • 由上述:发送方传输层对上层的不同网络应用均使用同一传输层协议传送数据,就称为传输层的复用功能。接收方传输层根据数据报头中的信息将数据传送给上层的不同的应用进程,就称为传输层的分用功能。    当网络中的...
  • TCP/IP协议之传输层

    千次阅读 2019-05-06 00:04:58
    传输层提供了进程间的逻辑通信,传输层向高层用户屏蔽了下面网络层的核心细节,使应用程序看起来像是在两个传输层实体之间有一条端到端的逻辑通信信道。 传输层协议:TCP UDP 传输层两个协议应用场景 TCP: 传输...
  • 这篇文章主要介绍了网络协议概述:物理层、连接层、网络层、传输层、应用层详解,本文用生活中的邮差与邮局来帮助理解复杂的网络协议,通俗易懂,文风幽默,是少见的好文章,需要的朋友可以参考下 信号的传输总要符合...
  • 一、传输层为什么实现不了可靠数据传输 传输层有两个协议,一个是TCP(可靠传输协议),一个是UDP(不可靠传输协议)。 根据五层模型,传输层接收的是网络层数据,也就是说TCP接收的数据(报文段)是由IP传送的,而IP只能...
  • 【计算机网络】传输层知识点总结

    万次阅读 多人点赞 2020-07-04 16:22:47
    定义:是一种面向连接的、可靠的、基于字节流的传输层通信协议 应用层次:传输层 数据格式:字节流 基本概念 1. TCP 三次握手 基本思想:“让我知道你已经知道了” 第一次握手:服务器 B 处于 **监听(LISTEN)**...
  • 传输层的简述与协议介绍

    千次阅读 2019-08-06 15:24:03
    传输层是整个网络体系结构中的关键层次之一,间于网络层和应用层之间; 主要负责向两个主机中进程之间的通信提供服务。由于一个主机同时运行多个进程,因此运输层具有有复用和分用功能。传输层在终端用户之间提供...
  • 传输层概述以及传输层端口

    千次阅读 2017-06-14 22:33:24
    一、运输协议概述两个主机进行通信实际上就是两个主机中的应用进程互相通信,应用进程之间的通信又称为端到端的通信。“运输提供应用进程间的逻辑通信”。“逻辑通信”的意思是:运输之间的通信好像是沿水平...
  • 有了网络层为什么还要设置传输层

    千次阅读 2020-05-16 23:08:09
    网络层是通过通信子网为主机之间提供逻辑通信,而传输层是依靠网络层的服务在两个主机之间的传输层实体之间建立一条端到端的逻辑通信信道,即为应用进程之间提供逻辑连接,传输层与应用层之间的服务访问点TSAP是端口...
  • 计算机网路-传输层详解

    万次阅读 多人点赞 2018-01-13 20:00:56
    一、传输层的服务基本原理 1.多路复用和解复用(分路)技术 复用是指:发送方的不同的应用进程都可以使用同一个传输层协议传送数据; 分路技术是指:接收方的传输层剥去报文首部之后能把这些数据正确的传输到正确...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 643,796
精华内容 257,518
关键字:

传输层