欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

传输层TCP/UDP协议

发布时间:2025/3/21 编程问答 33 豆豆
生活随笔 收集整理的这篇文章主要介绍了 传输层TCP/UDP协议 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
  • 可靠的TCP协议(传输层)

  •     1)  TCP封包结构如下图:

        各字段的含义为:

        封包序号:记录每个封包的序号,当TCP封包大于IP封包的长度时,TCP封包就需要拆分成更小的包,来下发给网络层,通过该字段可以让接收端重新将TCP数据组合起来。

        回应序号:回传给客户端的响应码,当客户端收到这个确认码时,就能够确定之前传递的封包已经被正确的收下了。

        资料补偿:由于Options字段是任意的,为了确认整个封包的大小,就用这个字段来说明整个封包区段的起始位置。

        保留:保留字段,还未被使用。

        控制标志码:用来说明联机的状态,以让接收端了解这个封包的主要动作,这个字段共六位,代表六个句柄,若为1则表示启动,每位含义分别为:

           URGUrgent:若为1表示该封包为紧急封包,接收端应该紧急处理,且Urgen Pointer字段也会被启用。

           ACKAcknowledge:若为1表示这个封包为响应封包

           PSHPush function:若为1,代表要求对方立即传送缓冲区内的其他对应封包,而无需等待缓冲区满了才送。

           RSTReset:若为1,表示联机会马上结束,而无需等待终止确认手续。也就是说,这是个强制结束的联机,且发送端已断线。

           SYNSynchronous:若为1,表示发送端希望双方建立同步处理,也就是要求建立联机。通常带有SYN标识的封包表示主动要连接到对方的意思。

           FINFinish:若为1,表示传送结束,所以通知对方数据传毕,是否同意断线,只是发送者还在等待对方的响应而已。

        Window(滑动窗口):主要用来控制封包的流量的,可以告知对方目前本身有的缓冲器容量(Receive Buffer)还可以接受封包。当Window=0时,代表缓冲器已经满额,所以应该暂停传输数据。Window的单位是Bytes

        确认检查码:当数据有发送端送出前,会进行一个检验的动作,并将该动作的检验值标注在这个字段上;而接受者收到这个封包之后,会再次对封包进行验证,并且比对原发送的Checksum值是否相符,如果相符就接受,若不符就会假设该封包已经损毁,进而要求对方重新发送。

        紧急资料:告知紧急数据所在的位置。

        任意选项:表示接收端可以接收的最大数据区段容量,若此字段不使用,表示可以使用任意数据区段的大小。这个字段较少使用。

        补足字段:将表头长度补齐为固定的长度。

        2)  端口号的最大值为65535216次方减1),端口号小于1024的端口只用root身份才能启动对应的服务,因此叫做特权端口。常用的端口与服务如下:

        20FTP-data,文件传输协议所使用的主动数据传输端口。

        21FTP,文件传输协议的命令通道

        22ssh,较为安全的远程联机服务器

        23Telnet,早期的远程机器服务软件

        25SMTP,简单邮件传递协议,用在作为mail server的端口

        53DNS,用在作为域名解析的服务器端口

        80www服务器

        110POP3,邮件收信协议

        443https,有安全加密机制的www服务器

    3)  TCP三次握手,如下图所示:

        过程详解:

        a)  A封包发起,当客户端想要对服务器端联机时,就必须要送出一个要求联机的封包,此时客户端必须随机取用一个大于1024以上的端口来作为程序沟通接口。然后再TCP的表头当中,必须要带有SYN的主动联机(SYN=1),并且记下发送出联机封包给服务器端的序号(sequence number=10001

        b)  B:封包接受与确认封包传送,当服务器接到这个封包,并且确定要接受这个封包后,就会开始制作一个同时带有SYN=1ACK=2的封包其中那个Acknowledge的号码是要给client端确认用的,所以该数字会比(a)里面的sequence number多一号(ack=10001+1=10002),那我们服务器也必须要确认客户端确实可以接收我们的封包才行,所以会发出一个Sequenceseq=20001),并且开始等待客户端给我们服务器的响应。

        c)  C:会送确认包当客户端收到来自服务端的ACK数字后(10002)就能确认之前那个要求封包被正确的收受了,接下来如果客户端也同意羽服务端建立联机时,就会再次的发送一个确认封包(ACK=1)给服务器,亦即是Acknowledge=20001+1=2002.

        d)  D:取得最后的确认,若一切都顺利,在服务器端接收到带有ACK=1ack=20002序号封包后,就能够建立起这次的联机了。

    2.非连接的UDP协议

        1)  UDPUser Datagram Protocol,用户数据流协议),非面向连接的协议,即在UDP的传输过程中,接受端在接受到封包之后,不会响应封包(ACK)给发送端,所以封包并没有像TCP封包有较为严格的检查机制。

        2)  UDP封包结构图为:

        

        3)  UDP数据传输特点:不可靠,但速度快,多用于实时性要求较高,但正确率不是很高的数据传输方式,如视频传输。

    3.网络防火墙与OSI七层协议

        1)  防火墙的原理:防火墙软件对封包的表头进行分析,并且设定分析规则,当发现某些特定的IP,特定的端口或者特定的封包信息(SYN/ACK等),就将该封包丢弃,这就是防火墙的原理。

        2)  OSI七层中,每层抵挡的数据有:

        第二层:可以针对来源与目标的MAC进行抵挡

        第三层:主要针对来源与目标的IP,以及ICMP的类别(type)进行抵挡

        第四层:针对TCPUDP的端口进行抵挡,也可以针对TCP的状态(code)来进行抵挡。


    转载于:https://blog.51cto.com/7613577/1608988

    总结

    以上是生活随笔为你收集整理的传输层TCP/UDP协议的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。