TCP编程(一)

来源:互联网 发布:迅捷网络 编辑:程序博客网 时间:2024/05/02 16:38

TCP是一种面向连接(连接导向)的,可靠的,基于字节流的传输层通信协议。

TCP工作过程:

1.连接的建立(三次握手)                                                                                                                                                                                                                      TCP的三次握手                        

第一次握手:建立连接时,客户端发送SYN包(SEQ=x)到服务器,并进入SYN_SEND状态,等待服务器确认。

第二次握手:服务器收到SYN包,必须确认客户的SYN(ACK=x+1),同时自己也送一个SYN包(SEQ=

y),即SYN+ACK包,此时服务器进入SYN_RECV状态。

地三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(y+1),此包发送完毕,客

户端和服务器进入Established状态,完成三次握手。


2.传输数据
一旦通信双方建立了TCP连接,连接中的任何一方都能向对方发送数据和接收对方发来的数据。利用TCP传输数据时,数据是以字节流的形式进行传输的。客户端与服务器建立连接后,发送方先将数据转换为字节流,然后将其发送给对方。发送数据时,程序不断的将数据流陆续写入TCP的发送缓存,然后TCP自动从缓存中取出一定量的数据,将其组成TCP报文段逐个发送给IP层,再通过IP层下面的网络接口层发送出去。接受端从IP层接受到TCP报文段后将其保存在接受缓存中,这是就可以通过程序依次读取接受缓存中的数据,从而达到相互通信的目的。


3.连接的终止
建立一个连接需要三次握手,而终止一个连接则需要四次握手,这是由TCP的半关闭(half-close)造成的。


                     关闭TCP连接         

TCP的主要特点:
(1)TCP是面向连接的协议。
(2)端到端的通信。每个TCP连接只能有两个端点,而且只能一对一通信,不能一点对多点直接通信。
(3)高可靠性。通过TCP连接传送的数据,能够保证数据无差错,不丢失,不重复地准确到达接收方,并且保证数

据到达的顺序与其发出的顺序相同。
(4)全双工方式传输。
(5)数据以字节流的方式传输。
(6)传输的数据无消息边界。



0 0