408第三季part2 - 计算机网络 - 传输层
理解
也就是说网络层只能知道传哪个电脑,但不知道该传哪个软件
传输层可以
比如AP1想发给AP3,AP2想发给AP4,复用就是主机A干的事情,分用就是主机B干的事情
了解了解就行
到了传输层就变成端口了
题目
虽然UDP也有检验,但它不会去修复,只会告诉你
源端口号是复用
再次理解
TCP段看一下
看右上的图,序号就是100
确认号这里就是300
A发送了100B給B,B的接受窗口是1000B,占了100B,还剩900B会告诉A,它还剩900B可以接受
看一下吧
第一次握手SYN=1说明是建立连接,这个死记
然后因为全双工,A发送数据,B也要发送数据
并且有属于他们的独立的编号
第二次握手
seq是序号,ack是确认号,确认号就是下一个字段的序号,就是x+1
ACK=1,只有大写的ACK是1小写的ack才生效
第三次握手
seq是x+1有2种理解,一个是上一个是x,那下一次发送就是x+1,另一个理解就是上一个确认号想要的就是x+1,那序号就是x+1
然后ack下一个想要的就是y+1
A如果突然不想发了
FIN=1释放一个连接,seq=u说明之前序号是u
然后第二步正常做
A不会给B发了,但B还会给A发
等哪一天B也不想发了就会有第三步
注意第三步这里seq变成w了,因为seq经过数据传送,seq早该变了
那ack为什么仍然是u+1?
因为A发送完一个数据之后再也没有新的数据发送了,B一直在苦苦等待u+1
然后A为了确认开始也回复给了B
题目
确认号是序号的下一个阶段即11221
第二次握手seq是任意的一个序号,并不知道是多少
有ack就有ACK=1
SYN第一次发送要建立连接
第3个字段序号是900
所以第二个字段会是500 - 899
第三个字段是200 - 499
又因为TCP是按顺序接受的,所以确认号是想要第二个字段的序号,即500
b
如果是一般人会以为下一次的序号会是上一次的确认号,即501
那很蠢了
因为看图可以知道乙还没收到甲的信息,这确认号还隔着舔着b脸要501呢
所以2者冲突的话,应该以之前的序号往后走701为主
接收窗口是500B,甲发了200B乙还没收到
所以下一次就只能发300B,
所以范围是701 - 1000
c
这里如果ack_seq = 701,然后下一个的seq优先是以之前的序号往后走701为主,发现他们都是701,说明甲发送的乙已经收到了
然后答案就会是701-1200