建立连接(三次握手)
第一步,A端的TCP首先向B端的TCP发送一个特殊的TCP报文段SYN(SYN置1,ACK置0),此报文段中的SYN标志被置为1,同时初始化一个起始序号0;
第二步,B端收到A端发送的SYN报文段,会为该TCP连接分配TCP缓存和变量,并向A端回复一个允许连接的报文段SYN、ACK(SYN、ACK段都置1),B也初始化一个序号0,ACKnumber=A的起始序号+1(即0+1);(注意ACK和ACKnumber不同)
第三步,A端在收到允许连接的报文段之后,A端也要给该连接分配缓存和变量,然后向B端发送另一个报文段(只有ACK段置1,SYN是0),此时序号是1,ACKnumber=B的序号+1(即0+1),用于对B端允许连接的SYN ACK报文段进行确认。
TCP连接成功。
断开连接(四次断开)
第一步,断开方(设为A)发送一个FIN报文(FIN位置1,***位P)给另一方(设为B);
第二步,B收到A发送的ACK报文,将ACKnumber置为P+1;
第三步,依旧是B发送给A,发送一个FIN报文,***置为Q;
第四步,A收到之后,发送一个ACK报文给B,其中ACKnumber置为Q+1。
TCP连接拆除。
可以看成A和B之间的连接是双向的,
第一步其实就是A跟B说,我要和你断开连接,
第二步是B说“好的,我收到了”,然后A——>B的连接断开了,
第三步B跟A说,我要和你断开连接,
第四步A说“好的,我收到了”,然后B——>A的连接断开了。
TCP特点:
1、面向连接的传输;
2、端到端的通信,每一条TCP连接只能有两个端点;
3、高可靠性,确保传输数据的正确性,不出现丢失or乱序;
4、全双工方式传输;
5、面向字节流,采用字节流方式,即以字节为单位传输字节序列;
6、紧急数据传送功能。
注意:TCP是一条虚连接而不是一条实际存在的物理链路。
TCP和UDP的区别:
1、TCP面向连接,UDP面向非连接;
2、TCP传输速度慢,UDP传输速度快;
3、TCP保证数据顺序,UDP不保证;
4、TCP保证数据正确性,UDP可能丢包;
5、TCP对系统资源要求多,UDP要求少。
TCP拓展:
TCP有种机制是慢联结机制,发现带宽链路比较拥挤时,TCP就会启动这种机制,在带宽比较低是,会将自己的连接往下调。所以在同一带宽中同时又UDP、TCP的话,TCP会比较吃亏。