哈尔滨网站建设信息,Wordpress html5 动画,自建网站教程视频,网络营销的网站的分析文章目录 1.什么是传输层2.传输层提供了什么服务3.传输层协议TCP 1.什么是传输层
传输层是OSI七层体系架构中的第四层, TCP/IP四层体系架构中的第二层, 从通信和信息处理两方面来看#xff0c;“传输层”既是面向通信部分的最高层#xff0c;与下面的三层一起共同构建进行网… 文章目录 1.什么是传输层2.传输层提供了什么服务3.传输层协议TCP 1.什么是传输层
传输层是OSI七层体系架构中的第四层, TCP/IP四层体系架构中的第二层, 从通信和信息处理两方面来看“传输层”既是面向通信部分的最高层与下面的三层一起共同构建进行网络通信所需的线路和数据传输通道同时又是面向用户的最低层因为无论何种网络应用最终都需要把各种数据报传送到对方。应用层的用户数据通过传输层协议在不同网络中的主机间进行传输因为仅靠网络层把数据传送到目的主机上还是不够的还必须把它交给目的主机的应用进程。 当网络层把源主机上发出的数据包传送给目的主机后,还需要将数据交到对应的应用程序进程. 位于两台网络主机间的真正数据通信主体不是这两台主机而是两台主机中的各种网络应用进程。因为在同一时刻两主机间可以进行多个应用通信. 而这里的应用进程识别就要依靠“传输层”了它通过“端口”将不同应用进程进行对应的。
2.传输层提供了什么服务
传输层的主要作用就是为它的上层提供端到端的数据传输服务, 即保证应用层的数据能够从源主机安全的到达目的主机上对应的应用进程. 1.什么是端到端的服务? 端到端通信是传输层为主机之间上的应用进程提供的通信服务. 传输层的数据段通过网络层将数据段交付到对端主机的目的进程,不管目的主机有多远中间有多少机器只要在两头间的应用进程间建立连接就说已经是端到端连接了(两个进程间的连接)即端到端是逻辑链路这条路可能经过了很复杂的物理路线但两端程序不管就好像它们是直接相连的一样,只认为是两端的直连 你比如你要将数据从A传送到E中间可能经过A→B→C→D→E对于传输层来说他并不知道b,c,d的存在他只认为我的报文数据是从a直接到e的这就叫做端到端。 2.如何实现端到端的服务? 传输层实现端到端的服务有两种方式,一种是面向连接的,一种是面向无连接的.
面向连接:在提供传输服务前需要先建立专门的传输连接(类似一条专门用于两个进程之间进行通信的虚拟信道)而且这条连接是可管理的在需要或通信结束时进行拆除。面向连接的传输服务是可靠的传输服务而且可提供拥塞控制和差错控制功能如TCP提供的传输服务。
无连接:在提供服务前不需要建立专门的传输连接直接向目的节点发送数据不管是否有可传输的通道只提供不可靠仅做尽力传输的传输服务如UDP提供的传输服务。
上述服务与网络层提供的面向连接和无连接服务很像但网络层是通信子网的一个组成部分网络服务质量并不可靠如频繁地丢失分组网络层系统可能崩溃或不断地进行网络复位。对于这些情况用户将束手无策因为用户不能对通信子网加以控制。而传输层能对通信子网进行管理和控制(什么进行管理和控制,网络层信息该丢还是丢,只不过丢了之后能够知道并重新对数据进行发送或其它操作管理)。 3.传输层服务 传输层要完成端到端的透明数据传输至少要分为两个步骤一是应用进程之间虚拟传输连接的建立此处仍仅针对面向连接的传输层协议二是源端用户数据沿着传输连接传送到目的端。
在整个数据传输过程中传输层服务需要完成以下8个方面的基本功能传输层寻址、传输连接建立、数据传输、传输连接释放、流量控制、拥塞控制、多路复用和解复用、崩溃恢复 4.连接与释放连接服务 |4.1传输层寻址虽然网络层把数据分组从源主机传送到了目的主机但是这并不代表数据的传输过程就全部完成了因为数据分组还没有真正地交付给相应的应用进程此时应用进程才是数据通信主体。而我们又知道同一时间的通信双方可能存在许多并发应用进程那么源端来的数据分组该交给哪个应用进程呢这就涉及传输层的寻址问题了。
传输层二传输层寻址方案
|4.2连接建立传输层有两个重要术语TSAP与TPDU,它们贯穿整个传输层数据连接以及传输服务的始末.
TSAP(Transport Layer Service Access Point):传输层服务访问点是上层(应用层)调用下层(传输层)的一个逻辑接口,其实就是我们所说的端口,端口用来标识应用层的进程.
TPDU(Transport Layer Data Unit):传输层与对等层之间传输的报文,也就是数据段,其实每一层都有每一层的SAP和PDU.
传输层TCP数据段格式:
源端口号16位的源端口中包含初始化通信的端口。源端口和源IP地址的作用是标识报文的返回地址。 目的端口号16位的目的端口域定义传输的目的。这个端口指明报文接收计算机上的应用程序地址接口。 序列号对数据包进行标记以便在到达目的地后重新重装假设当前的序列号为 s发送数据长度为 l则下次发送数据时的序列号为 s l,每发送一次数据就累加一次该数据字节数的大小。在建立连接时由计算机生成一个随机数作为序列号的初始值,用来解决网络包乱序问题。客户端的序列号为上一个服务器端的确认号. 确认序号收到对方报文后都要发送一个确认报文(包含确认号)表示确认收到该报文并表明期望收到的下一个报文段的序号值。 TCP 的可靠性是建立在「每一个数据报文都需要被确认收到」的基础之上的,用来解决不丢包的问题。客户端的确认号是上一个服务器端的序列号负载数据. 数据偏移TCP 报文段的头部长度 它指出了 TCP报文段的数据起始处距离TCP报文的起始处有多远。 由于 4 位二进制数能表示的最大十进制数字是 15这也侧面限制了 TCP 首部的最大长度 保留 保留为今后使用但目前应置为 0 标志位 6位标志位每一位的值只有 0 和 1
ACK当 ACK 1 的时候确认号Acknowledgemt Number有效称携带 ACK 标志的 TCP 报文段为确认报文段为0表示数据段不包含确认信息确认号被忽略。TCP 规定在连接建立后所有传送的报文段都必须把 ACK 设置为 1SYN当 SYN 1 的时候表明这是一个请求连接报文段。 一般称携带 SYN 标志的 TCP 报文段为同步报文段。 在 TCP 三次握手中的第一个报文就是同步报文段在连接建立时用来同步序号。对方若同意建立连接则应在响应的报文段中使 SYN 1 和 ACK 1。FIN当 FIN 1 时表示此报文段的发送方的数据已经发送完毕并要求释放 TCP 连接。一般称携带 FIN 的报文段为结束报文段。在 TCP 四次挥手释放连接的时候就会用到该标志。RST当 RST 1时表示 TCP 连接中出现严重错误需要释放并重新建立连接。 一般称携带 RST 标志的 TCP 报文段为复位报文段。PSH当PSH1时表明该数据段高优先级接收方TCP应尽快将数据推给接收程序不要等到整个TCP序列缓存都填满了后再交付。URG:当URG1时表明此数据段应尽快传送而不要按本来的队列次序来传送。与紧急指针字段共同使用紧急指针指出在本数据段中紧急数据所在的最后一个字节的位置使接管方知道紧急数据有多长。
窗口大小该字段明确指出了现在允许对方发送的数据量它告诉对方本端的 TCP 接收缓冲区还能容纳多少字节的数据这样对方就可以控制发送数据的速度。 窗口大小的值是指从本报文段首部中的确认号算起接收方目前允许对方发送的数据量。假如确认号是 701 窗口字段是 1000。这就表明从 701 号算起发送此报文段的一方还有接收 1000 字节序号是 701 ~ 1700 个字节的数据的接收缓存空间。 校验和由发送端填充接收端对 TCP 报文段执行 CRC 算法以检验 TCP 报文段(头部有效载荷)在传输过程中是否损坏如果损坏这丢弃。 紧急指针仅在 URG 1 时才有意义指出本数据段中的紧急数据字节数同时指出了紧急数据的末尾在数据段中的位置发送方 TCP 把紧急数据插入到本数据段有效载荷的最前面而在紧急数据后面的数据仍是普通数据。 选项和填充可扩展部分。
传输层建立/拒绝连接需要用到三种类型的TPDU一一CR,CC,RJ CR:连接请求数据段 CC:连接确认数据段 RJ:拒绝数据段 传输层建立/拒绝连接的大致流程: TCP建立连接/断开连接的流程: TCP规定建立连接时发送的同步数据段即SYN 1的报文段不能携带数据但要消耗掉一个序号.
Ⅰ:建立连接时,主机A发送同步报文,并将同步位SYN置为1确认位ACK置为0(代表当前报文的确认序号无效),随机产生一个序列号seqk然后将该数据包发送给主机B主机A进入SYN_SENT状态等待主机B确认。Ⅱ主机B收到报文后由同步位SYN1知道主机A请求建立连接主机B将同步位SYN和确认位ACK都置为1确认序号ackJ1随机产生一个序号seqy并将该报文发送给主机A以确认收到该连接请求主机B进入SYN_RCVD状态。Ⅲ主机A收到确认报文后检查ACK是否为1,再检查确认序号ack是否为k1如果正确则将确认位ACK置为1acky1(表示我收到你序号位y的报文了)并将该报文发送给主机B主机B检查ACK是否为1,再检查ack是否为y1如果正确则成功建立连接主机A和主机B进入ESTABLISHED状态完成三次握手随后主机A与主机B之间可以开始传输数据了。
断开连接:
Ⅰ断开连接时,主机A发送一个终止报文并将终止位FIN置为1确认位ACK置为0,随机产生一个序列号sequ然后将该报文发送给主机B,用来关闭主机A到主机B的数据传送主机A进入FIN_WAIT_1状态。Ⅱ主机B收到终止报文后发送一个确认报文给主机A,并将确认位ACK置为1确认序号acku1随机生成一个序号seqv,主机B进入CLOSE_WAIT状态。Ⅲ主机B发送一个终止报文,并将终止位FIN置为1确认位ACK置为1,随机序号seqw,确认号u1,用来关闭主机B到主机A的数据传送主机B进入LAST_ACK状态。Ⅳ主机A收到终止报文FIN后主机A进入TIME_WAIT状态接着发送一个确认报文ACK给主机B确认序号为ackw1序号sequ1,主机B进入CLOSED状态完成四次挥手。
为什么建立连接是三次握手而关闭连接却是四次挥手呢
这是因为主机B在LISTEN状态下收到建立连接请求的SYN报文后把ACK和SYN放在一个报文里发送给主机A。而关闭连接时当收到对方的FIN报文时仅仅表示对方不再发送数据了但是还能接收数据己方也未必全部数据都发送给对方了所以己方可以立即close也可以发送一些数据给对方后再发送FIN报文给对方来表示同意现在关闭连接因此己方ACK和FIN一般都会分开发送。 5.数据传输服务 传输层在数据传输时提供了流量控制、拥塞控制、多路复用和解复用、崩溃恢复等服务. 传输层TCP的流量控制和拥塞控制(图文详解) 如何理解传输层的多路复用与多路分解
3.传输层协议TCP 补充: 通信子网(communication subnet或简称子网): 是指网络中实现网络传输功能的设备及其软硬件的集合传输设备、网络传输协议、传输控制软件等属于通信子网是网络的内层负责信息的传输. 简而言之就是由各种网络传输设备(中继器、集线器、网桥、路由器、网关等硬件设备)和传输线路组成,主要负责数据的传输. 通信子网对应OSI体系架构中的下三层(物理/数据链路/网络层).
资源子网:资源子网由计算机系统、终端、终端控制器、连网外设、各种软件资源与信息资源组成, 主要负责数据的处理和数据存储,资源子网对应OSI体系结构的上三层(应用/表示/会话层). 点到点传输:两个设备直接相连(中间不经过任何其它设备)的通信叫点到点通信。它只提供一台机器到另一台机器之间的通信不会涉及到程序或进程的概念。 点到点通信是针对数据链路层或网络层来说的因为数据链路层只负责直接相连的两个节点之间的通信一个节点的数据链路层接受ip层数据并封装之后就把数据帧从链路上发送到与其相邻的下一个节点。 点对点是基于MAC地址和或者IP地址是指一个设备发数据给与该这边直接连接的其他设备这台设备又在合适的时候将数据传递给与它相连的下一个设备通过一台一台直接相连的设备把数据传递到接收端。由物理层、数据链路层和网络层组成的通信子网为网络环境中的主机提供点到点的服务. 序列号:TCP协议工作在OSI的传输层是一种可靠的面向连接的数据流协议TCP之所以可靠是因为它保证了传送数据包的顺序。顺序是用一个序列号来保证的。响应包内也包括一个序列号表示接收方准备好这个序列号的包。在TCP传送一个数据包时它会把这个数据包放入重发队列中同时启动计时器如果收到了关于这个包的确认信息便将此数据包从队列中删除如果在计时器超时的时候仍然没有收到确认信息则需要重新发送该数据包。另外TCP通过数据分段中的序列号来保证所有传输的数据可以按照正常的顺序进行重组从而保障数据传输的完整。 TCP序列号是两个方向的每个方向有自己的序列号这个序列号是随机产生的. 客户端的序列号为上一个服务器端的确认号,客户端的确认号是上一个服务器端的序列号负载数据.
参考: 端到端通信 TCP协议详解 TCP/IP协议详解 《深入理解计算机网络》之传输层总结