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)传输的数据无消息边界。
- TCP编程(一)
- 网络编程TCP(一)
- java tcp/ip socket编程(一)
- java----网络编程(一)TCP
- TCP/IP 网络编程入门(一)
- Socket编程(一)TCP传输文件
- JAVA TCP/IP Socket 编程(一)
- Android网络编程TCP、UDP(一)
- Android网络编程TCP、UDP(一)
- linux TCP Socket编程(一)
- TCP套接字编程实例(一)
- TCP/IP网络编程(一)
- 网络编程TCP(一)
- Socket套接字编程(一)——TCP编程
- Linux下的网络编程(一)TCP编程
- 基本TCP socket编程一
- 网络编程TCP基础一
- linux 网络编程基础(一)(tcp)
- Java基础List<Map<String, String>>
- 【Java编码准则】の #02不要在客户端存储未加密的敏感信息
- C语言中的volatile
- 16extjs笔记
- 利用GDB在远程开发机进行调试
- TCP编程(一)
- GoldenGate配置(二)之双向复制配置
- Ubuntu 12.04编译kernel,make menuconfig错误
- 数组和指针的区别
- C++课程设计
- MACD指标绿柱二次潜水带来的警示
- Android之NDK开发
- JSP_实现Servlet登陆,注册,链接Mysql数据库。
- 学会用Clang来进行内存泄露分析