TCP网络编程原理--大白话解析


TCP是一种面向连接的套接字(SOCK_STREAM)

特点:

1.传输过程中数据不会丢失(不能抬杠啊)

2.串行传输,数据传输中是有顺序的。

3.传输的数据没有边界,就像一条河流一样,不能分割成一段的,(但是可以在应用层用协议规定)。

TCP套接字中的I/O缓冲

特点:

1. I/O缓冲中在每个套接字中单独存在。

2. I/O缓冲实在创建该套接字时候自动生成的。

3. 即使是关闭了套接字也会继续传输缓冲区的剩余数据。

4.关闭套接字将丢失输入缓冲区中的数据(到你家门口,你刚好把们砌成墙了,进不来)。


TCP内部工作原理1:

TCP 的经典三次握手(Three-Way handshaking),语言描述:

主机A:现在我给您个数据包序列号为1000,如果接受无误,您下次给我一个ACK=1001数据包,表示您接到了。

主机B:好的,我收到了,我的ACK将是1001,我现在发给你我这边的数据包序列号为2000;

主机A: 收到了2000号数据包,我继续发送1001号数据包,并且回复您2001,表示2000号数据包没问题。

解析:这样三次AB两台主机都知道了对方的数据包编号,如果这时候在一次数据传输中数据包丢失了,那么可以根据序列号重新发送。


TCP内部工作原理2:

TCP的数据传输过程:

这个过程比较简单,一发一答,ACK这块注意:ACK=SEQ号+传递字节数+1;不然比如该次传输了100字节,那么其实只收到80,那发送端不确定你是否完整接受,所以把字节数量加进去。

这里还有个问题,就是数据包发生丢失的时候,TCP套接字发完后接收不了回信,就会开启计时,超时间则重新发送。


TCP内部工作原理3:

TCP套接字的断开连接:

主机A:我想断开了;

主机B:是么?稍等我一下;

主机B:我好了,可以断开了;

主机A:好的,再见;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值