精华内容
下载资源
问答
  • 传输层协议简介

    2020-12-28 19:20:18
    传输层协议简介一、传输层1、简介2、基本功能二、传输层协议三、TCP协议1、TCP报文段2、三次握手3、四次挥手4、常用端口及功能四、UDP协议五、协议对比总结 一、传输层 1、简介 传输层是国际标准化组织提出的开放...

    一、传输层

    1、简介

    传输层是国际标准化组织提出的开放系统互连(OSI)参考模型中的第四层。该层协议为网络端点主机上的进程之间提供了可靠、有效的报文传送服务。其功能紧密地依赖于网络层的虚拟电路或数据报服务。传输层定义了主机应用程序之间端到端的连通性。传输层只存在于端开放系统中,是介于低3层通信子网系统和高3层之间的一层,但是很重要的一层,因为它是源端到目的端对数据传送进行控制从低到高的最后一层。

    传输层的服务一般要经历传输连接建立阶段,数据传送阶段,传输连接释放阶段3个阶段才算完成一个完整的服务过程。而在数据传送阶段又分为一般数据传送和加速数据传送两种形式。传输层中最为常见的两个协议分别是传输控制协议TCP(Transmission Control Protocol)和用户数据报协议UDP(User Datagram Protocol) 。

    传输层提供逻辑连接的建立、传输层寻址、数据传输、传输连接释放、流量控制、拥塞控制、多路复用和解复用、崩溃恢复等服务。

    2、基本功能

    • 分割与重组数据

    • 按端口号寻址

    • 连接管理

    • 差错控制和流量控制,纠错的功能
      传输层主要是向上层提供可靠的通信服务,避免报文丢失、出错等。

    二、传输层协议

    主要分为两大类:

    • 面向连接网络协议(TCP)
      面向连接网络协议是指通信双方之间在通信之前先建立连接。
      TCP协议提供可靠的交付服务:传送的数据无差错。不丢失,不重复,且顺序与与源数据一致。

    • 无连接网络协议
      无连接网络协议是指通信双方不需要事先建立一条通信线路,而是把每个带有目的地址的数据包送到网络线上,由系统自主选定线路进行传输。
      UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。

    三、TCP协议

    传输控制协议(TCP,Transmission Control Protocol)是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议。

    互联网络与单个网络有很大的不同,因为互联网络的不同部分可能有截然不同的拓扑结构、带宽、延迟、数据包大小和其他参数。TCP的设计目标是能够动态地适应互联网络的这些特性,而且具备面对各种故障时的健壮性。

    1、TCP报文段

    在这里插入图片描述

    • 16位源端口号:16位的源端口中包含初始化通信的端口。源端口和源IP地址的作用是标识报文的返回地址。
    • 16位目的端口号:16位的目的端口域定义传输的目的。这个端口指明报文接收计算机上的应用程序地址接口。
    • 32位序号:32位的序列号由接收端计算机使用,把重新分段的报文重组成最初形式。当SYN出现,序列码实际上是初始序列码(Initial Sequence Number,ISN),而第一个数据字节是ISN+1。这个序列号(序列码)可用来补偿传输中的不一致。
    • 32位确认序号:32位的序列号由接收端计算机使用,重组分段的报文成最初形式。如果设置了ACK控制位,这个值表示一个准备接收的包的序列码。
    • 4位首部长度:4位包括TCP头大小,指示何处数据开始。一般为20字节,可扩张为60字节。
    • 保留(6位):6位值域,这些位必须是0。为了将来定义新的用途而保留。
    • 控制位:
    各个控制位解释
    URG紧急位紧急指针有效位
    ACK确认位只有当ACK=1,确序列号才有效;当ACK=0时,确认序列无效
    PSH急迫位标志位为1时,要求接收方尽快将数据送至应用层
    RST重置位当RST值为1时,通知重新建立TCP连接
    SYN同部/连接位同步序列号,TCP需要建立连接时将这个值设为1
    FIN断开位当TCP完成数据传输时需要断开连接时,提出断开连接的一方将FIN设为1
    • 16位窗口大小:用来表示想收到的每个TCP数据段的大小。值得大小是可变的,网络通畅时窗口值变大以加快传输速度,网络不稳定时,减小窗口值,保证可靠传输。
    • 16位校验和:16位TCP头。源机器基于数据内容计算一个数值,收信息机要与源机器数值 结果完全一样,从而证明数据的有效性。检验和覆盖了整个的TCP报文段:这是一个强制性的字段,一定是由发送端计算和存储,并由接收端进行验证的。
    • 16位紧急指针:指向后面是优先数据的字节,在URG标志设置了时才有效。如果URG标志没有被设置,紧急域作为填充。加快处理标示为紧急的数据段。
    • 选项:长度不定,但长度必须为1个字节。如果没有选项就表示这个1字节的域等于0。
    • 数据:该TCP协议包负载的数据。

    2、三次握手

    在这里插入图片描述
    TCP三次握手的过程如下:
    客户端发送SYN(Seq=x,SYN=1)报文给服务器端,进入SYN_SEND状态。
    服务器端收到SYN报文,回应一个SYN (Seq=y)ACK(ACK=x+1)SYN=1报文,进入SYN_RECV状态。
    客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。

    三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。

    3、四次挥手

    在这里插入图片描述
    TCP四次挥手的过程如下:
    1、主动方首先调用close,称该端执行“主动关闭”,发送FIN/ACK(FIN=1,ACK=1,Seq=x)报文。
    2、被动方接收到这个FIN的对端执行 “被动关闭”,确认后发送ACK(ACK=x+1)报文给主动方。
    3、一段时间后,接收到这个文件结束符的被动方将调用close关闭它的套接字,发送FIN/ACK(FIN=1,ACK=1,Seq=y)给主动方。
    4、接收这个最终FIN的主动方确认这个FIN。

    4、常用端口及功能

    端口号协议说明
    21FTPFTP服务器所开放的控制端口
    23TELNET远程登录,可远程控制管理目标计算机
    25SMTPSMTP服务器开放的端口,用于发送邮件
    80HTTP超文本传输协议,Web服务
    110POP3用于邮件的接收

    四、UDP协议

    UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。

    UDP是一个无连接协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。

    常用端口

    端口号协议说明
    69TFTP简单文件传输协议
    111RPC远程过程调用
    123NTP网络时间协议

    五、协议对比

    • TCP 是面向连接的传输控制协议,而UDP 提供了无连接的数据报服务。
    • TCP 具有高可靠性,确保传输数据的正确性,不出现丢失或乱序;UDP 在传输数据前不建立连接,不对数据报进行检查与修改,无须等待对方的应答,所以会出现分组丢失、重复、乱序,应用程序需要负责传输可靠性方面的所有工作。
    • UDP 具有较好的实时性,工作效率较 TCP 协议高。
    • UDP 段结构比 TCP 的段结构简单,因此网络开销小
    TCPUDP
    是否连接面向连接无连接
    传输可靠性高可靠性不可靠
    连接对象点对点支持一对一、一对多、多对一和多对多
    速度

    总结

    TCP协议 和UDP协议最大的区别就是:TCP是面向连接的,UDP是无连接的。TCP协议和UDP协议各有所长、各有所短,适用于不同要求的通信环境。

    展开全文
  • 传输层协议简述

    千次阅读 2021-11-25 18:54:23
    TCP/IP协议族的传输层协议 TCP(Transmission Control Protocol) 传输控制协议 UDP(User Datagram Protocol) 用户数据报协议 一:TCP协议介绍 TCP是面向连接的、可靠的进程到进程通信的协议。TCP提供全...

    一:TCP协议介绍

    二:TCP报文格式

    三:TCP三次握手

    四:TCP四次挥手

    五:UDP协议介绍

    六:常见协议及其端口

    TCP和UDP协议

    TCP/IP协议族的传输层协议

    TCP(Transmission Control Protocol)

    传输控制协议

    UDP(User Datagram Protocol)

    用户数据报协议

    一:TCP协议介绍

    TCP是面向连接的、可靠的进程到进程通信的协议。TCP提供全双工服务,即数据可在同一时间双向传输,每一个TCP都有发送缓存和接收缓存,用来临时存储数据。

    TCP提供全双工服务,即数据可在同一时间双向传输。

    TCP报文段

    TCP将若干个字节构成一个分组,叫报文段(Segment)。

    TCP报文段封装在IP数据报中。

    传输层协议

    面向连接网络协议,指通信双方间进行通信之前要先建立连接。如打电话,双方通话前需要先建立连接。等数据 发送结束后,双方在断开连接。

    无连接网络协议,是指通信双方不需要事先建立一条通信线路,而是把每个带有目的地址的包送到网络线路上,由系统自主选定路线进行传输。比如QQ发送信息。

    UDP协议是无连接、不保证可靠性的传输层协议。发送端不关心发送的数据到达目标主机、数据是否出错等,收到数据的主机也不会告诉发送方是否收到了数据,它的可靠性由上层协议来保障。传输数据速度更快,效率更高。

    二:TCP报文格式

    TCP报文段:

    源端口(16)

    目标端口(16)

    序号(32)

    确认号(32)

    首部长度(4)

    保留(6)

    URG

    ACP

    PSH

    RST

    SYN

    FIN

    窗口大小(16)

    检验和(16)

    紧急指针(16)

    选项

    1、源端口号:发送方进程的端口号。

    2、目标端口号:接收端进程的端口号。接收端收到数据段后,根据这个端口号来确定把数据送给哪个应用程序的进程

    3、序号:发送端为每个字节进行编号。便于接收端正确重组。

    当TCP从进程接收数据字节时,把它们分片成数据段存储在发送缓存中,并对每一个字节进行编号,当数据到达目的地后,接收端会按照这个序号把数据重新排列,保证数据的正确性。

    4、确认号:对发送端的确认信息。

    接收端响应消息时将会用它来告诉发送端这个序号之前的数据段都已经收到,如确认号是x,就是表示前x-1个数据段都已经收到。

    5、首部长度:用它可以确定TCP首部数据结构的字节长度。一般情况下TCP首部是20字节,但首部长度最大可以扩展为60字节。

    6、控制位:

    URG:紧急位。紧急指针有效位。

    ACK:确认位。只有当ACK=1时,确认序列号字段才有效:当ACK=0时,确认号字段无效。

    PSH: 急迫位。标志位为1时,要求接收方尽快将数据段送达应用层。

    RST:重置位。当RST值为1时,通知重新建立TCP连接。

    SYN:同步(连接)位。同步序号位,TCP需要建立连接时将这个值设为1.

    FIN:断开位。当TCP完成数据传输需要断开连接时,提出断开连接的一方将这个值设为1

    7、窗口大小:说明本地可接收数据段的数目。这个值的大小是可变的,当网络通常时接收端响应消息会将这个窗口值变大以加快传输速度,当网络不稳定时减少这个值可保证网络数据的可靠传输,TCP中的流量控制就是依靠变化窗口的大小实现的。

    比如下载 速度从一开始的几KB逐渐提升到几MB的过程。

    8、校验和:用来做差错控制。字段校验的范围包括首部和数据两部分。数据段在发送时和到达目的地时会进行校验和计算,若两次校验和一致,则说明数据基本正确,则将认为数据已被破坏,接收端将丢弃该数据。

    9、紧急指针:和URG配合使用,当URG>/1时有效。

    10、选项:在TCP首部可以有多达40字节的可选信息。列如,最大报文段长度MSS(MAXmum Seqment Size)。MSS告诉对方TCP:“我的缓存所能接收的报文段的数据字段的最大长度是Mss个字节”。

    三:TCP三次握手

    TCP连接

    TCP建立连接的过程称为三次握手

    三次握手的过程

    TCP是面向连接的,就是说每次发送数据之前都要和对方建立一条可靠的连接,这个建立连接的过程分为3个步骤,就叫做三次握手。

    (1)当客户的端向服务器发送请求连接的报文时:

    seq序列号=x(x为随机)

    syn=1(表示发送连接请求)

    (2)服务器端收到客户端发来的请求报文后,同意建立连接,则向客户端发送确认报文。

    seq序列号=y(这时服务器也会产生一个序列号y,和客户端的序列号不相关)

    ACK确认号=x+1(seq序列号x+1,表示确认收到客户端的请求)

    ACK=1 (表示这是条确认请求)

    SYN=1(同时也发送一个建立连续的请求)

    (3)客户端进程收到服务端进程的确认后,还要向服务端给出确认,然后连接成功建立;

    seq序列号=x+1(这时客户端的序号为1)

    ACK确认号=y+1(表示确认收到了服务器的连接请求)

    ACK=1 (表示这是确认报文)

    通过Sniffer抓包来分析三次握手过程

    第一次握手

    第二次握手

    第三次握手

    四:TCP四次挥手

    TCP断开连接的四次挥手

    TCP断开连接的四次挥手

    常用的TCP端口及功能

    端口

    协议

    说明

    21

    FTP

    FTP服务器所开放的控制端口

    23

    TELNET

    用于远程登录,可以远程控制管理目标计算机

    25

    SMTP

    SMTP服务器开放的端口,用于发送邮件

    80

    HTTP

    超文本传输协议

    110

    POP3

    用于邮件的接收

    小结

    TCP报文格式

    tcp建立连接三次握手

    tcp断开连接四次挥手

    常见应用的tcp协议端口

    五:UDP协议介绍

    UDP协议

    无连接,不可靠的传输协议

    花费的开销小

    UDP报文的首部格式

    源端口(16)

    目标端口号(16)

    UDP长度(16)

    UDP校验和(16)

    UDP长度:用来指出UDP的总长度,为首部加上数据

    校验和:用来完成对UDP数据的差错检验,它是UDP协议提供的唯一的可靠机制。

    六:常见协议及其端口

    常见的UDP端口号及功能

    端口

    协议

    说明

    69

    TFTP

    简单文件传输协议

    111

    RPC

    远程过程调用

    123

    NTP

    网络时间协议

    总结

    tcp是一个可靠的面向连接的协议

    TCP建立连接的三次握手

    TCP断开连接的四次挥手

    UDP是一个不可靠无连接的协议。

    展开全文
  • IP首部中有一个协议字段,用来标识网络层(IP)的 上一层所采用的是哪一种传输层协议。根据这个字段的协议号,就可以识别IP传 输的数据部分究竟是TCP的内容,还是UDP的内容。 同样,传输层的TCP和UDP, 为了识别自己所...

    传输层的作用

    传输层定义

    IP首部中有一个协议字段,用来标识网络层(IP)的 上一层所采用的是哪一种传输层协议。根据这个字段的协议号,就可以识别IP传 输的数据部分究竟是TCP的内容,还是UDP的内容。

    同样,传输层的TCP和UDP, 为了识别自己所传输的数据部分究竟应该发给 哪个应用,也设定了这样一个编号。

    以包裹为例,邮递员(IP)根据收件人地址(目标IP地址)向目的地(计 算机)投递包裹(IP数据报)。包裹到达目的地以后由对方(传输层协议)根据 包裹信息判断最终的接收人(接收端应用程序)。

    如果快递单上只写了家庭地址和姓氏,那该如何是好呢?你根本无法判断快 递究竟应该投递给哪一位家庭成员。同样,如果收件人地址是学校或公司,而 且也只写了一个姓氏,会给投递工作带来麻烦。因此,在日本的投递业务中都会 要求寄件人写清楚接收人的全名。其实在中国,一个人的姓氏不像日本那样复姓 居多,人们也通常不会仅以姓氏称呼一个人。但是也有一种特殊情况,那就是 如果一个收件地址中有多个同名同姓的接收者该怎么办?此时,往往会通过追加 电话号码来加以区分。

    在TCP/IP的通信当中也是如此,需要指定“姓氏”,即“应用程序"。而传 输层必须指出这个具体的程序,为了实现这一功能,使用端口号这样一种识别 码。根据端口号就可以识别在传输层上一层的应用层中所要进行处理的具体 程序。

    通信处理

    再以邮递包裹为例,详细分析一下传输层的协议工作机制。

    前面提到的“应用程序”其实就是用来进行TCP/IP应用协议的处理。因此, TCP/IP中所要识别的"姓氏”就可以被理解为应用协议。

    TCP/IP的众多应用协议大多以客户端/服务端的形式运行。客户端,类似于 客户的意思,是请求的发起端。而服务端,则表示提供服务的意思,是请求的处 理端。另外,作为服务端的程序有必要提前启动,准备接收客户端的请求。否则 即使有客户端的请求发过来,也无法做到相应的处理。

    这些服务端程序在UNIX系统当中叫做守护进程。例如HTTP的服务端程序是 httpd (HTP守护进程),而ssh的服务端程序是sshd (SSH守护进程)。在UNIX中并不需要将这些守护进程逐个启动,而是启动一个可以代表它们接收客户端请求的inetd (互联网守护进程)服务程序即可。它是一种超级守护进程。该超级守护进程收到客户端请求以后会创建(fork)新的进程并转换(exec)为sshd等各个守护进程。

    确认一个请求究竟发给的是哪个服务端(守护进程),可以通过所收到数据包的目标端口号轻松识别。当收到TCP的建立连接请求时,如果目标端口为22,则转给sshd,如果是80则转给httpd,然后,这些守护进程会继续对该连接上的通信传输进行处理。

    传输协议TCP,UDP通过接收数据中的目标端口号识别目标处理程序。传输协议的数据将被传递给HTTP, TELNET以及FTP等应用层协议。

    两种传输层协议TCP和UDP

    在TCP/IP中能够实现传输层功能的、具有代表性的协议是TCP和UDP。

    TCP

    TCP是面向连接的、可靠的流协议。流就是指不间断的数据结构,你可以把 它想象成排水管道中的水流。当应用程序采用TCP发送消息时,虽然可以保证发送的顺序,但还是犹如没有任何间隔的数据流发送给接收端。

    TCP为提供可靠性传输,实行“顺序控制”或“重发控制”机制。此外还具 备“流控制(流量控制)”、"拥塞控制”、提高网络利用率等众多功能。

    UDP

    UDP是不具有可靠性的数据报协议。细微的处理它会交给上层的应用去完 成。在UDP的情况下,虽然可以确保发送消息的大小,却不能保证消息一定会 到达。因此,应用有时会根据自己的需要进行重发处理。

    TCP与UDP区分

    可能有人会认为,鉴于TCP是可靠的传输协议,那么它一定优于UDP。其实 不然。TCP与UDP的优缺点无法简单地、绝对地去做比较。那么,对这两种协议 应该如何加以区分使用呢?下面,我就对此问题做一简单说明。

    TCP用于在传输层有必要实现可靠传输的情况。由于它是面向有连接并具备 顺序控制、重发控制等机制的,所以它可以为应用提供可靠传输。

    而在一方面,UDP主要用于那些对高速传输和实时性有较高要求的通信或广 播通信。我们举一个通过IP电话进行通话的例子。如果使用TCP, 数据在传送途 中如果丢失会被重发,但这样无法流畅地传输通话人的声音,会导致无法进行正 常交流。而采用UDP, 它不会进行重发处理。从而也就不会有声音大幅度延迟到 达的问题。即使有部分数据丢失,也只是会影响某一小部分的通话。此外,在 多播与广播通信中也使用UDP而不是TCP。RIP、DHCP等 基于广播的协议也要依赖于UDP。

    因此,TCP和UDP应该根据应用的目的按需使用。

    套接字(Socket)

    应用在使用TCP或UDP时,会用到操作系统提供的类库。这种类库 一般被称为API (Application Programming Interlace , 应用编程接口)。

    使用TCP或UDP通信时,又会广泛使用到套接字(socket)的API。

    套接字原本是由BSD UNIX开发的,但是后被移植到了Windows的Winsock 以及嵌入式操作系统中。

    应用程序利用套接字,可以设置对端的IP地址、端口号,并实现数 据的发送与接收。

    端口号

    端口号定义

    数据链路和IP中的地址,分别指的是MAC地址和IP地址。前者用来识别同 一链路中不同的计算机,后者用来识别TCP/IP网络中互连的主机和路由器。在 传输层中也有这种类似于地址的概念,那就是端口号。端口号用来识别同一台计 算机中进行通信的不同应用程序。因此,它也被称为程序地址。

    根据端口号识别应用

    一台计算机上同时可以运行多个程序。例如接受WWW服务的Web浏览器、 电邮客户端、远程登录用的ssh客户端等程序都可同时运行。传输层协议正是利 用这些端口号识别本机中正在进行通信的应用程序,并准确地将数据传输。

    通过IP地址、端口号、协议号进行通信识别

    仅凭目标端口识别某一个通信是远远不够的。①和②的通信是在两台计算机上进行的。它们的目标端口号相同,都是80,例如打开两个Web浏览器,同时访问两个服务器上不同的页面,就会在这个浏览器跟服务器之间产生类似前面的两个通信。在这种情况下也必须严格区分这两个通信。因此可以根据源端口号加以区分。

    下图中③跟①的目标端口号和源端口号完全相同,但是它们各自的源IP地址不同。此外,还有一种情况上图中并未列出,那就是IP地址和端口全都一样,只是协议号(表示上层是TCP或UDP的一种编号)不同。这种情况下,也会认为是两个不同的通信。

    因此, TCP/IP或UDP/IP通信中通常采用5个信息来识别"一个通信。它们是“源IP地址”、“目标IP地址”、“协议号”、“源端口号”、“目标端口号”。只要其中某一项不同,则被认为是其他通信。

    端口号如何确定

    在实际进行通信时,要事先确定端口号。确定端口号的方法分为两种:

    标准既定的端口号

    这种方法也叫静态方法。它是指每个应用程序都有其指定的端口号。但并不 是说可以随意使用任何一个端口号。每个端口号都有其对应的使用目的。

    例如,HTTP、TELNET、F1,P等广为使用的应用协议中所使用的端口号就是 固定的。这些端口号也被称之为知名端口号(Well-Known Port Number)。知名端口号一般由0 到1023的数字分配而成。应用程序应该避免使用知名端口号进行既定目的之外的 通信,以免产生冲突。

    除知名端口号之外,还有一些端口号也被正式注册。它们分布在1024到 49151的数字之间。不过,这些端口号可用于任何通信用途。

    时序分配法

    第二种方法也叫时序(或动态的)分配法。此时,服务端有必要确定监听端 口号,但是接受服务的客户端没必要确定端口号。

    在这种方法下,客户端应用程序可以完全不用自己设置端口号,而全权交给 操作系统进行分配。操作系统可以为每个应用程序分配互不冲突的端口号。例如, 每需要一个新的端口号时,就在之前分配号码的基础上加l。这样,操作系统就 可以动态地管理端口号了。

    根据这种动态分配端口号的机制,即使是同一个客户端程序发起的多个TCP 连接,识别这些通信连接的5部分数字也不会全部相同。

    动态分配的端口号取值范围在49152到65535之间。

    端口号与协议

    端口号由其使用的传输层协议决定。因此,不同的传输协议可以使用相同的端口号。

    例如, TCP与UDP使用同一个端口号,但使用目的各不相同。这是因为端口号上的处理是根据每个传输协议的不同而进行的。

    数据到达IP层后,会先检查IP首部中的协议号,再传给相应协议的模块。如果是TCP则传给TCP模块、如果是UDP则传给UDP模块去做端口号的处理。即使是同一个端口号,由于传输协议是各自独立地进行处理,因此相互之间不会受到影响。

    此外,那些知名端口号与传输层协议并无关系,只要端口一致都将分配同一种程序进行处理。例如, 53号端口在TCP与UDP中都用于DNS服务,而80端口用于HTTP通信。从目前来看,由于HTTP通信必须使用TCP,因此UDP的80端口并未投入使用。但是将来,如果HTTP协议的实现也开始应对UDP协议以及应用协议被相应扩展的情况下,就可以原样使用与TCP保持相同的80端口号了。

    UDP

    UDP的特点及其目的

    UDP是User Datagram Protocol的缩写。

    UDP不提供复杂的控制机制,利用IP提供面向无连接的通信服务。并且它是 将应用程序发来的数据在收到的那一刻,立即按照原样发送到网络上的一种机制。

    即使是出现网络拥堵的情况下,UDP也无法进行流量控制等避免网络拥塞的 行为。此外,传输途中即使出现丢包,UDP也不负责重发。甚至当出现包的到达 顺序乱掉时也没有纠正的功能。如果需要这些细节控制,那么不得不交由采用 UDP的应用程序去处理"

    UDP有点类似于用户说什么听什么的机制,但是需要 用户充分考虑好上层协议类型并制作相应的应用程序。因此,也可以说,UDP按 照“制作程序的那些用户的指示行事”

    由于UDP面向无连接,它可以随时发送数据。再加上UDP本身的处理既简单又高效,因此经常用于以下几个方面:

    • 包总量较少的通信(DNS、SNMP等)
    • 视频、音频等多媒体通信(即时通信)
    • 限定于LAN等特定网络中的应用通信
    • 广播通信(广播、多播)

    用户与程序员

    此处所使用的“用户”并不单单指“互联网的使用者”。曾经它也表 示为那些编写程序的程序员。因此,UDP的“用户" (User)在现在看来 其实就相当于程序员。也就是说,认为UDP是按照程序员的编程思路在 传送数据报也情有可原。

    其他传输层协议

    UDP-Lite

    UDP-Lite (Lightweight User Datagram Protocol , 轻量级用户数据报协议)是扩 展UDP机能的一种传输层协议。在基于UDP的通信当中如果校验和出现错误, 所收到的包将被全部丢弃。然而,现实操作中,有些应用,在面对这种情况时并 不希望把已经收到的所有包丢弃。

    如果将UDP中校验和设置为无效,那么即使数据的一部分发生错误也不会将 整个包废弃。不过,这不是一个很好的方法。因为如果发生的错误有可能是UDP 首部中的端口号被破坏或是IP首部中的IP地址被破坏,就会产生严重后果。因 此,不建议将校验和关闭。为了解决这些问题,UDP的修正版UDP-Lite协议就 出现了。

    UDP-Lite提供与UDP几乎相同的功能,不过计算校验和的范围可以由应用 自行决定。这个范围可以是包加上伪首部的校验和计算,可以是首部与伪首部的 校验和计算,也可以是首部、伪首部与数据从起始到中间某个位置的校验和计 算

    有了这样的机制,就可以只针对不允许发生错误的部分进行校验和的检查。 对于其他部分,即使发生了错误,也会被忽略不计。而这个包也不会被丢弃,而 是直接传给应用继续处理。

    SCTP

    SCTP (Stream Control Transmission Protocol , 流控制传输协议), 与TCP­样,都是对一种提供数据到达与否相关可靠性检查的传输层协议。其主要特点 如下:

    以消息为单位收发

    TCP中接收端并不知道发送端应用所决定的消息大小。在SCTP中却可以。

    支持多重宿主

    在有多个NIC的主机中,即使其中能够使用的NIC发生变化,也仍然可以 继续通信。

    支持多数据流通信

    TCP中建立多个连接以后才能进行通信的效果,在SCTP中一个连接就 可以。

    可以定义消息的生存期限

    超过生存期限的消息,不会被重发。

    SCTP主要用于进行通信的应用之间发送众多较小消息的情况。这些较小的应用消息被称作数据块(Chunk), 多个数据块组成一个数据包。

    此外,SCTP具有支持多重宿主以及设定多个IP地址的特点。多重宿主是指 同一台主机具备多种网络的接口。例如,笔记本电脑既可以连接以太网又可以连 接无线LAN。

    同时使用以太网和无线LAN时,各自的NIC会获取到不同的IP地址。进行 TCP通信,如果开始时使用的是以太网,而后又切换为无线LAN, 那么连接将会 被断开。因为从SYN到FIN包必须使用同一个IP地址。

    然而在SCTP的情况下,由于可以管理多个IP地址使其同时进行通信,因此 即使出现通信过程当中以太网与无线LAN之间的切换,也能够保持通信不中断。

    DCCP

    DCCP (Datagram Congestion Control Protocol , 数据报拥塞控制协议)是一个 辅助UDP的崭新的传输层协议。UDP没有拥塞控制机制。为此,当应用使用 UDP发送大量数据包时极容易出现问题。互联网中的通信,即使使用UDP也应该 控制拥塞。而这个机制开发人员很难将其融合至协议中,于是便出现了DCCP这 样的规范。

    DCCP具有如下几个特点:

    • 与UDP一样,不能提供发送数据的可靠性传输。
    • 它面向连接,具备建立连接与断开连接的处理。在建立和断开连接上是具 有可靠性。
    • 能够根据网络拥堵情况进行拥塞控制。使用DCCP (RFC4340)应用可以根 据自身特点选择两种方法进行拥塞控制。它们分别是"类似TCP (TCP­Like)拥塞控制”和"TCP友好升级控制" (TCP-Friendly Rate Control) "' (RFC4341)。
    • 为了进行拥塞控制,接收端收到包以后返回确认应答(ACK)。该确认应 答将被用于重发与否的判断。

     

    本文链接:https://www.pianshen.com/article/76181065276/

    展开全文
  • 使用TCP协议传输数据相对来说更安全,因为通信双方拥有一个专属的通信通道,每发送一个数据包都有确认回复,若数据包丢失。如果发送放没收到确认包,就可以重发这个数据包。 最经典的例子就是三次握手。三次握手是...

    使用TCP协议传输数据相对来说更安全,因为通信双方拥有一个专属的通信通道,每发送一个数据包都有确认回复,若数据包丢失。如果发送放没收到确认包,就可以重发这个数据包。

    最经典的例子就是三次握手。三次握手是通信双方建立TCP连接前的必须步骤。第一次握手时请求方向接收方发送友好问候,请求建立连接。第二次握手接收方礼貌回复,表示收到请求。第三次握手请求方坚定交往信息,向接收方表示已做好了连接准备。于是双方的TCP连接就建好啦~

    完成三次握手后,双方就可以开始传输数据了。当然,握手很严谨,说再见也是一丝不苟的。详细内容可以在合天网安实验室里进行实验操作《Wireshark数据抓包分析之传输层协议(TCP协议)》了解。下面开始实战。

    根据已经搭建好的实验环境,本次实战步骤如下:

    1. 在测试环境使用发包工具和Wireshark抓取TCP三次握手和四次断开的数据包

    2. 详细分析TCP协议的三次握手以及四次断开。

    本次的任务可以拆分成:安装发包工具,配置TCP客户端(请求方),服务端(接收方),与学习Wireshark软件懂使用。咱开始吧~

    我们使用" TCP&UDP测试工具"来制作和发送TCP数据包,双击实验机器桌面的" TCP&UDP测试工具",会出现下图显示页面:

    在这里插入图片描述

    下面我们需要配置TCP的服务端以及客户端。首先配置服务器端:选择地址为10.1.1.33的机器,双击桌面的" TCP&UDP测试工具",右键点击服务器模式,在下拉列表中,选择创建服务器,如下图:

    在这里插入图片描述

    选择"创建服务器"之后,会弹出服务器端口设置,本次使用默认工具给的6000端口即可,点击"确定"按钮。

    在这里插入图片描述

    点击"确定"按钮之后,在左侧的服务器模式列表中,会出现创建的列表,选择我们创建的服务器,右键点击,选择"启动服务器",即完成了服务器端的配置。

    在这里插入图片描述

    接下来配置客户端,步骤与前面的类似:选择地址为10.1.1.142的机器,双击桌面的" TCP&UDP测试工具",右键点击客户端模式,在下拉列表中,选择"创建连接",如下图:

    在这里插入图片描述

    在弹出的窗口中,选择TCP协议,服务器IP为10.1.1.33.端口6000,本机随意IP,如下图:

    在这里插入图片描述

    点击创建后,如下图:

    在这里插入图片描述

    那么我们看看Wireshark软件获取到的客户端与服务器端之间发送到TCP数据包吧。

    获取的TCP协议的数据包分为两部分,即TCP三次握手,四次断开的数据。在实际的操作中,我们往往还会抓到除了目标地址之外往来到数据包,因此先使用过滤器过滤一下IP源,方便我们查看。

    启动Wireshark,在Filter中输入tcp,点击Apply会看到很多的数据包,这是因为测试环境中,有很多的应用程序,与其服务器连接,使用TCP协议。如下图:

    在这里插入图片描述

    在这里,我们已知两台机器的IP情况下,可以在filter中输入"ip.addr == 10.1.1.142 and ip.addr == 10.1.1.33"来过滤出我们想要的数据,点击工具中的"apply连接"按钮。如下图:

    在这里插入图片描述

    在这里插入图片描述

    在上图中,70,73,74帧是tcp的三次握手,428,429,430,431帧是四次断开的数据。

    分析握手

    通过前面到工作,我们已经找到了想要的数据包,接下来我们将对TCP的三次握手进行详细分析。

    首先我们看TCP包的首部。TCP首部的通用格式如下图所示:

    在这里插入图片描述

    在上面的图中,标出了每一个字段,咱今天就说说比较重要的源端口、目标端口、标记。

    源端口表明了发送方的输出端口号。目标端口表示数据包进入接收方的端口号端口对上了,才能正确地将数据包传达。标记用来表示所传输的TCP数据包类型,包括URG、ACK、PSH、RST、SYN和FIN,其中SYN表示同步序号,使用在建立连接时;ACK是确认标志,表示应答域有效,就是前面所说的接收方对请求方的问候表示礼貌致意;FIN表示发送端以及达到数据末尾,此时双方就准备挥手告别了。

    那么接下来咱具体分析下三次握手。

    干货来了!

    TCP第一次握手,捕获的数据包信息如下所示:

    在这里插入图片描述

    从Wireshark的Packet List面板中的Info列可以看到显示的TCP标志位是SYN,所以该数据包是客户端向服务器发送的第一次握手连接。在Packet Details面板中,显示了该包的详细信息,下面详细介绍。

    在这里插入图片描述

    以上信息,表示该包的大小为62个字节。

    在这里插入图片描述

    以上内容表示源IP是10.1.1.142,目的IP为10.1.1.33。

    在这里插入图片描述

    以上内容是传输层首部的详细信息,这里使用TCP协议,其中源端口为56678,目标端口为6000。

    更多详细的信息,可以进入合天实战实验课程查询。

    接下来是第二次握手,TCP第二次握手捕获数据包相信信息,如下:

    在这里插入图片描述

    在该界面显示了第二次握手数据包的详细信息,其中位于TCP上面的信息与第一次握手时相类似,留给文后照着上面的分析独立思考。

    同样地,第三次握手也一定没问题,看下图:

    在这里插入图片描述

    于是这样就完成了TCP连接的建立啦~

    五 再来看看再见

    TCP的四次断开,也是TCP协议的主要工作之一。那咱也看看四次分手,偶不,四次断开~TCP第一次断开连接的数据包如下:

    在这里插入图片描述

    在该界面显示了TCP第一次断开,数据包的详细信息,是不是和握手时的数据包很像?

    查看tcp数据包可以看到客户端向服务器发送FIN和ACK标志的数据包开始断开连接,其中FIN和ACK标志位都为1。

    Source Port: 56678(56678) #源端口号

    Destination Port: 6000(6000) #目标端口号

    Stream index: 0 #流节点号

    TCP Segment Len: 0 #分段长度

    Sequence number: 1 (relative sequence number) #序列号

    Acknowledgment number: 1 (relative ack number) #确认编号

    Header Length: 20 bytes #首部长度

    … 0000 0001 0001 = Flags: 0x011 (FIN,ACK) #标志位,此处为(FIN,ACK)

    \000. … … = Reserved: Not set

    …0 … … = Nonce: Not set

    … 0… … = Congestion Window Reduced (CWR): Not set

    … .0… … = ECN-Echo: Not set

    … …0. … = Urgent: Not set

    … …1 … = Acknowledgment: Not set #确认编号已设置

    … … 0… = Push: Not set

    … … .0… = Reset: Not set

    … … …0. = Syn: Set #请求位

    … … …1 = Fin: Not set #FIN标志位

    Expert Info (Chat/Sequence): Connection finish (FIN) #专家信息

    Connection finish (FIN) #消息内容,连接完成(FIN)

    Severity level: Chat #安全级别

    Group: Sequence

    Window size value: 64240 #窗口大小

    Calculated window size: 64240 #估计的窗口大小

    Window size scaling factor: -1 (unknown) 窗口大小缩放比例因素

    Checksum: 0x16cb [validation disabled] #校验和

    Good Checksum: False

    Bad Checksum: False

    Urgent pointer: 0

    FIN是1表示要分手啦~

    在TCP第二次断开连接的数据包是服务器向客户端发送的ACK包,其中ACK标志位为1。

    在这里插入图片描述

    TCP第三次断开连接的数据包是服务器向客户端发送的FIN和ACK包。其中FIN和ACK标志位为1。

    在这里插入图片描述

    TCP第四次断开连接的数据包,客户端向服务器发送ACK的包。其中,ACK标志位都为1。

    在这里插入图片描述

    展开全文
  • 应用层协议 运输层协议 端口号 HTTP TCP 80 SMTP TCP 25 POP3 TCP 110 FTP TCP 21,20 TELNET TCP 23 DNS UDP 53 DHCP UDP 67,68
  • TCP协议与UDP协议的区别 首先咱们弄清楚,TCP协议和UDP协议与TCP/IP...TCP/IP协议集包括应用层,传输层,网络层,网络访问层。 其中应用层包括: 1、超文本传输协议(HTTP):万维网的基本协议; 2、文件传输(TFTP简单文
  • 网络协议攻击-01-传输层协议攻击

    千次阅读 2021-11-28 08:01:17
    传输层协议攻击 前言 传输层的主要协议是TCP、UDP。 流行的攻击方式: TCP RST攻击 TCP会话劫持攻击 TCP SYN洪泛拒绝服务攻击 TCP RST 攻击 又称伪造TCP重置报文攻击,假冒干扰TCP通信连接的技术方法。 在TCP协议...
  • 传输层协议

    千次阅读 2021-11-25 16:33:14
    一、TCP协议 1、TCP是面向连接的、可靠的进程到进程通信的协议 ...2、无连接网络协议,是指通信双方不需要事先建立一条通信线路,而是把每个带有目的地址的包送到网络线路上,有系统自主选定路线进行传输
  • 1. 基本规则 15765-2定义传输层需要有以下两个基本功能: 传输最长达 4 294 967 ...传输层的所有内容被称为传输层协议数据单元,记为 N_PDU,它的格式如下: **N_AI - Address information:**地址信息,包含了目标
  • 传输层传输层是负责端与端(端点,进一步理解就是端口)之间的传输,不论是传输层当中的udp协议还是tcp协议,都是负责端口和端口之间的数据传输。“传输层只负责端口,不负责ip(ip是网络层在负责)” 端口的划分...
  • 一.TCP/IP协议族的传输层协议 二.TCP协议 三.三次握手 四.四次挥手 五.常用的TCP端口号及其功能 总结 一.TCP/IP协议族的传输层协议 1.TCP传输控制协议 2.UDP用户数据报协议 二.TCP协议 TCP是...
  • 网络 ICMP协议 作用:用来测试网络连通性并给予一定的反馈 定义:Internet控制报文协议,是错误侦测与回馈机制 组成:ping tracert 协议号 PC命令: TCP——6 UDP——17 ping -t持续不断的ping,查看有...
  • 传输层协议之UDP,TCP

    千次阅读 2021-11-11 21:09:36
    传输层是操作系统内核实现的,因此谈到的传输层协议,一般都是指线程的一些协议,很少会涉及“自定制”。 UDP的特性 1.无连接 2.不可靠 3.面向数据报 4.全双工 无连接:socket创建好之后,就可以立即尝试读写数据了 ...
  • 1、传输层协议简介 2、TCP协议 二、三次握手 三、四次挥手 总结: 一、TCP协议介绍 1、传输层协议简介 TCP是TCP/IP协议族中传输层协议的一员 传输层总共是有TCP和UDP两大协议 每个协议都有对应的协议号,...
  • 传输层协议介绍

    2021-11-26 15:06:26
    一.TCP和UDP协议族的传输层协议 1.TCP协议 2.常用的TCP端口号及其功能 3.TCP建立连接的过程称为三次握手 4.TCP断开连接的四次挥手 2.UDP协议 1.UDP报文的首部格式 2.常用的UDP端口号及其功能 一.TCP和...
  • TCP 和 UDP 是今天应用最广泛的传输层协议,拥有最核心的垄断地位。今天互联网的整个传输层,几乎都是基于这两个协议打造的。无论是应用开发、框架设计选型、做底层和优化,还是定位线上问题,只要碰到网络,就逃不...
  • 互联网协议 传输层及概述

    千次阅读 2021-12-06 16:09:17
    互联网协议第一部分
  • 传输层的功能是由操作系统提供负责实现的,传输层位于操作系统的协议栈。感觉这篇没有写出我想要的效果,试着写,后面有时间再优化,这篇大多参考《网络是怎么连接的》,感兴趣的同学建议直接读这本书,我这里做一些...
  • 传输层的两个协议TCP和UDP

    千次阅读 2020-12-31 17:23:01
    面向连接的传输控制协议,在传送数据之前必须建立连接,数据传送结束后要释放连接。不提供广播或多播服务。由于TCP要提供可靠的面向连接的传输服务,因此不可避免增加了许多开销;确认,流量控制,计时器连接管理等...
  • 负责 物理上的互相关联、节点间相互通信传输 传输以“帧”为单位的数据包,该的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。对bit数据格式化,校验。目的是保障数据传输可靠性。 第...
  • 你是一台电脑,你的名字叫 A ...虽然你此时还什么都没干,但你还是给自己这一层起了个响亮的名字,叫做传输层。 你本以为自己所在的第四层万事大吉,啥事没有,但很快问题就接踵而至。 问题来了 前
  • SOMEIP传输层协议 TCP UDP协议选择

    千次阅读 2021-01-28 20:05:32
    在UDP情况下,SOME/IP消息不是片段;...较大的消息必须通过TCP传输。在这种情况下,使用了TCP的鲁棒特性。如果TCP流中出现同步错误,SOME/IP规范允许所谓的魔术cookie,以便再次查找下一条消息的开头。 ...
  • 应用层协议 运输层协议 名字转换 DNS(域名系统) UDP 文件传送 TFTP(简单文件传送协议) UDP 路由选择协议 RIP(路由信息协议) UDP IP地址配置 DHCP(动态主机配置协议) UDP 网络管理 SNMP(简单...
  • 传输层的俩个主要协议(TCP/UDP)(2013-04-16 00:14:39)标签:传输层、tcp、udp协议itUDP的英文全称为:User DatagramProtocol,它是面向无连接的,不提供可靠交付,但是提供尽最大可能的交付。TCP的英文全称为:...
  • 一 地址解析协议(ARP) 作用:根据已知的IP地址解析获得其对应的MAC地址。 实验:组件以下网络并观察抓包,对报文处理过程进行描述 ARP解析过程(包括交换机MAC地址表学习)描述: 1 主机1 对指定的IP地址...
  • 网络层协议中的TCP与UDP一、TCP与UDP协议介绍1.TCP协议2.UDP协议二、TCP报文格式TCP报文段报文段首部格式三、TCP三次握手四、TCP四次挥手五、常见协议及其端口 一、TCP与UDP协议介绍 1.TCP协议 TCP(Transmission ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 443,968
精华内容 177,587
关键字:

传输层协议

友情链接: Web.zip