码迷,mamicode.com
首页 > 其他好文 > 详细

传输层TCP/UDP协议

时间:2015-01-28 01:02:23      阅读:320      评论:0      收藏:0      [点我收藏+]

标签:传输层tcp/udp协议

  1. 可靠的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)来进行抵挡。


本文出自 “虎哥的博客” 博客,请务必保留此出处http://7613577.blog.51cto.com/7603577/1608988

传输层TCP/UDP协议

标签:传输层tcp/udp协议

原文地址:http://7613577.blog.51cto.com/7603577/1608988

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!