tcp-ip-4

Tcp协议

telnet协议

tcp协议是可靠协议:

体现在数据传输上:
在tcp数据包中有一个十分重要的字段:sequence(序列号)

在两台电脑通信的时候:由于每一个数据包都有字节长度限制,所以对于大部分数据都要分片发送
我们假设这种情况:
pc1 和 pc2在经过了三次握手建立了tcp链接,这时候,pc1要向pc2发送1GB的
电影,这时会把这1GB数据分片成一个个小数据包发送,而每个数据包都有一个sequence字段
我们通过抓包可以发现这个字段的值一直在增大。
这时为什么呢?他们遵循下面这个公式
ACK=sequence+len(数据长度)
每次p1发送数据包到pc2,这两台机器会经过下面的操作
1:pc1发送tcp数据包,这个数据包中包含seq(序列号)和len(数据长度)
2:pc2收到数据包会发送一个ack包表示已经收到,同时返回一个数值,即上面公式计算的
3:pc1接受到ack包会检查这个ack值和自己先前发送的是否一样,
一样那他就会以返回的ack作为sequence的新值发送新的数据包。
不一样那么他就会根据返回的ack值作为sequence从新发送数据包(注意,这里是基于他返回的ack值作为新的序列号)
两者不同的是是否会进行数据包的重发,有趣的是,观察抓取到的包会发现,重传的数据包远远大于正常发送出去数据包的数量。


上面介绍了数据安全可靠传输,下面介绍tcp怎么实现多路复用
方式:socket套接字
什么是套接字?
简单来讲就是ip加上端口号,比如pc1和pc2通信,我们插上了网线,通过dhcp协议获取了ip
但是我们可以简单的通过ip通信,但是当软件多了起来,多个软件通信的时候,计算机就傻了,
那这时候port就充当管理通信的功能,一个主机ip和一个端口我们称为一个socket,两个pc
通信过程形成的两个套接字我们称之为一个session,tcp就是通过这种方式实现多路复用的。

五元组:源目端口+源目ip+协议号

posted @ 2020-10-04 20:58  秋夜风起人微醺  阅读(107)  评论(0)    收藏  举报