tcp协议通讯工作原理

tcp协议通讯工作原理

ID:36990142

大小:34.00 KB

页数:4页

时间:2019-05-06

tcp协议通讯工作原理_第1页
tcp协议通讯工作原理_第2页
tcp协议通讯工作原理_第3页
tcp协议通讯工作原理_第4页
资源描述:

《tcp协议通讯工作原理》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、TCP协议通讯工作原理一、TCP三次握手传输控制协议(TransportControlProtocol)是一种面向连接的,可靠的传输层协议。面向连接是指一次正常的TCP传输需要通过在TCP客户端和TCP服务端建立特定的虚电路连接来完成,该过程通常被称为“三次握手”。可靠性可以通过很多种方法来提供保证,在这里我们关心的是数据序列和确认。TCP通过数据分段(Segment)中的序列号保证所有传输的数据可以在远端按照正常的次序进行重组,而且通过确认保证数据传输的完整性。要通过TCP传输数据,必须在两端主机之间建立连接。举例说明,TCP客户端需要和TCP服务端建立连接,过程如下所示

2、:TCPClientFlagsTCPServer1SendSYN(seq=w)----SYN--->SYNReceived2SYN/ACKReceived<---SYN/ACK----SendSYN(seq=x),ACK(w+1)3SendACK(x+1)----ACK--->ACKReceived,ConnectionEstablishedw:ISN(InitialSequenceNumber)oftheClientx:ISNoftheServer在第一步中,客户端向服务端提出连接请求。这时TCPSYN标志置位。客户端告诉服务端序列号区域合法,需要检查。客户端在TCP报头

3、的序列号区中插入自己的ISN。服务端收到该TCP分段后,在第二步以自己的ISN回应(SYN标志置位),同时确认收到客户端的第一个TCP分段(ACK标志置位)。在第三步中,客户端确认收到服务端的ISN(ACK标志置位)。到此为止建立完整的TCP连接,开始全双工模式的数据传输过程。二、TCP标志这里有必要介绍一下TCP分段中的标志(Flag)置位情况。如下图所示:*SYN:同步标志  同步序列编号(SynchronizeSequenceNumbers)栏有效。该标志仅在三次握手建立TCP连接时有效。它提示TCP连接的服务端检查序列编号,该序列编号为TCP连接初始端(一般是客户端

4、)的初始序列编号。在这里,可以把TCP序列编号看作是一个范围从0到4,294,967,295的32位计数器。通过TCP连接交换的数据中每一个字节都经过序列编号。在TCP报头中的序列编号栏包括了TCP分段中第一个字节的序列编号。  *ACK:确认标志  确认编号(AcknowledgementNumber)栏有效。大多数情况下该标志位是置位的。TCP报头内的确认编号栏内包含的确认编号(w+1,Figure-1)为下一个预期的序列编号,同时提示远端系统已经成功接收所有数据。  *RST:复位标志  复位标志有效。用于复位相应的TCP连接。  *URG:紧急标志  紧急(Theu

5、rgentpointer)标志有效。紧急标志置位,  *PSH:推标志  该标志置位时,接收端不将该数据进行队列处理,而是尽可能快将数据转由应用处理。在处理telnet或rlogin等交互模式的连接时,该标志总是置位的。  *FIN:结束标志  带有该标志置位的数据包用来结束一个TCP回话,但对应端口仍处于开放状态,准备接收后续数据。三、TCP端口为了能够支持同时发生的并行访问请求,TCP提供一种叫做“端口”的用户接口。端口是操作系统核心用来识别不同的网络回话过程。这是一个严格的传输层定义。通过TCP端口和IP地址的配合使用,可以提供到达终端的通讯手段。实际上,在任一时刻的

6、互联网络连接可以由4个数字进行描述:来源IP地址和来源端口,目的IP地址和目的端口。位于不同系统平台,用来提供服务的一端通过标准的端口提供相应服务。举例来说,标准的TELNET守护进程(telnetdaemon)通过监听TCP23端口,准备接收用户端的连接请求。四、TCP缓存(TCPBacklog)通常情况下,操作系统会使用一块限定的内存来处理TCP连接请求。每当用户端发送的SYN标志置位连接请求到服务端的一个合法端口(提供TCP服务的一端监听该端口)时,处理所有连接请求的内存使用量必须进行限定。如果不进行限定,系统会因处理大量的TCP连接请求而耗尽内存,这在某种程度上可以

7、说是一种简单的DoS攻击。这块经过限定的,用于处理TCP连接的内存称为TCP缓存(TCPBacklog),它实际上是用于处理进站(inbound)连接请求的一个队列。该队列保存那些处于半开放(half-open)状态的TCP连接项目,和已建立完整连接但仍未由应用程序通过accept()调用提取的项目。如果这个缓存队列被填满,除非可以及时处理队列中的项目,否则任何其它新的TCP连接请求会被丢弃。一般情况下,该缓存队列的容量很小。原因很简单,在正常的情况下TCP可以很好的处理连接请求。如果当缓存队列填满的时候新的客户端

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。