TCP的特性
- TCP提供一种面向连接的,可靠的字节流服务
- 在一个TCP连接中,仅有两方进行彼此通信。广播和多播不能用于TCP
- TCP使用检验和确认和重传机制来保证可靠传输
- TCP传输失败后,数据包会返回,不会丢失
注意:TCP并不能保证数据一定会被对方接收到,因为这是不可能的,TCP能做到的是,如何有可能,就把数据递送到接收方,否则就(通过放弃重传并且中断连接这一手段)通知用户,因此准确来说TCP也不是100%可靠的协议,它所能提供的是数据的可靠递送和故障的可靠通知
- 三次握手
三次握手是指建立一个TCP连接时,需要客户端和服务器发送三个包
三次握手的目的是客户端连接到服务器的指定端口,建立TCP连接,并同步连接双方的序列号和确认号,交换TCP窗口大小信息,在Socket编程中,客户端执行connect()中,将触发三次握手
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
SYN:同步序列编号(Synchronize Sequence Numbers),请求同步
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK(确认同步)包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手.
完成三次握手之后,客户端与服务器开始传输数据
image
四次挥手:
1.客户端向服务器发送一个请求断开连接的包
2.服务器回应客户端并发送一个确认的包
3.服务器向客户端发送一个请求断开的包
4.客户端回应服务器并发送一个确认的包
网友评论