`
$会飞的鱼$
  • 浏览: 25578 次
  • 性别: Icon_minigender_1
  • 来自: 嘉兴
社区版块
存档分类

小析TCP/IP协议与UDP协议

阅读更多
总述:
    简单的说TCP(传输控制协议)是一种可靠的协议,UDP(用户数据包协议)是一种不可靠的协议。TCP是一个可靠的面向连接的协议,UDP是不可靠的或非连接的协议。打个简单的比方,TCP的通信方式就像打电话,在正式通话前都要先说声“喂”,确定对方在线后才开始通话,会话结束时都要说“再见”,然后才挂电话。而发明信片则没有这样的机制,发出去之后就不管对方收到没收到了。

    UDP的特点:UDP是一种不可靠的、非连接的分组交付服务,但也正是由于其不可靠性,所以他的开销很小。换言之:UDP提供了一种在高效可靠的网络上传输数据,而不用笑话哦不必要的网络资源和处理时间的通信方式。

    TCP的特点:TCP是一种面向连接的可靠的通信协议,在传输开始之前,通信双方要通过三次握手来建立连接,以保证连接的可靠性。(后面将具体介绍“三次握手”以及“四次断开”机制)

TCP协议头的内容:
    TCP协议头最少20个字节,包括以下的区域(由于翻译不禁相同,文章中给出相应的英文单词):
    TCP源端口(Source Port):16位的源端口其中包含初始化通信的端口。源端口和源IP地址的作用是标示报问的返回地址。
    TCP目的端口(Destination port):16位的目的端口域定义传输的目的。这个端口指明报文接收计算机上的应用程序地址接口。
    TCP序列号(序列码,Sequence Number):32位的序列号由接收端计算机使用,重新分段的报文成最初形式。当SYN出现,序列码实际上是初始序列码(ISN),而第一个数(Acknowledgment Number):32位的序列号由接收端计算机使用,重组分段的报文成最初形式。,如果设置了ACK控制位,这个值表示一个准备接收的包的序列码。
数据偏移量(HLEN):4位包括TCP头大小,指示何处数据开始。
    保留(Reserved):6位值域,这些位必须是0。为了将来定义新的用途所保留。
    标志(Code Bits):6位标志域。表示为:紧急标志、有意义的应答标志、推、重置连接标志、同步序列号标志、完成发送数据标志。按照顺序排列是:URG、ACK、PSH、RST、SYN、FIN。
    窗口(Window):16位,用来表示想收到的每个TCP数据段的大小。
校验位(Checksum):16位TCP头。源机器基于数据内容计算一个数值,收信息机要与源机器数值结果完全一样,从而证明数据的有效性。
优先指针(紧急,Urgent Pointer):16位,指向后面是优先数据的字节,在URG标志设置了时才有效。如果URG标志没有被设置,紧急域作为填充。加快处理标示为紧急的数据段。
    选项(Option):长度不定,但长度必须以字节。如果没有选项就表示这个一字节的域等于0。
    填充:不定长,填充的内容必须为0,它是为了数学目的而存在。目的是确保空间的可预测性。保证包头的结合和数据的开始处偏移量能够被32整除,一般额外的零以保证TCP头是32位的整数倍。

三次握手:
    在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
    第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。
    第二次握手:服务器收到syn包,必须确认客户的SYN(ac k=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
    第三次握手:客户端收到服务 器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

四次断开(连接终止协议):
    由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。
    (1) TCP客户端发送一个FIN,用来关闭客户到服务器的数据传送(报文段4)。
    (2) 服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1(报文段5)。和SYN一样,一个FIN将占用一个序号。
    (3) 服务器关闭客户端的连接,发送一个FIN给客户端(报文段6)。
    (4) 客户段发回ACK报文确认,并将确认序号设置为收到序号加1(报文段7)。
1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics