电脑知识 | TCP通俗易懂详解 <二>tcp首部
目录
一、👋🏻前言
二、🖃TCP快递单填写(必填部分)
1.🌸TCP快递单样式
2.🏢填写名称
3.🔢TCP序号
4. ✔️TCP确认号
编辑5.✅️确认号的确认号
6.📏首部长度
7.🔮为了未来
8.🚑URG
9.💭PSH
10.🔂RST
11.📞SYN
12.☎FIN
13.🗔窗口
13.👩⚖️检验和
14.🚨紧急指针
三、🖃TCP快递单填写(选填部分)
四、🏁结语
一、👋🏻前言
大家好,我是菌菌巧乐兹~书接上回,我们讲到TCP就是信息运输的一种方式,和快递一样,那既然是快递,我们在送快递前,就要写一些信息,类似寄件人,收件人,电话.....等。
本篇文章就写,TCP传输信息如何“填写快递信息”
二、🖃TCP快递单填写(必填部分)
1.🌸TCP快递单样式
tcp快递单的官方术语为TCP首部
TCP首部为了方便看,写成长方形的,
长:32bit,宽:5行【必须】+10行【备注】
这个快递单最少需要写32*5 = 160bit = 20字节内容,
最多可以增加到32*15 = 480bit = 60字节内容
2.🏢填写名称
源端口:寄件人(占地16bit)
目的端口:收件人(占地16bit)
3.🔢TCP序号
如果快递太大,就会把快递分开发,那么你收到的快递一般都是要标号的,要不然你不知道收到了几个,收全没有,目前是第几个。
序号(seq):本报文段所发送的数据的第一个字节的序号。(占地32bit)
比如现在有20个书要发,我5个一捆发快递,一共会发四个快递,那第一个快递的序号写0,第二个写6,第三个写11,第四个写16这样。
4. ✔️TCP确认号
快递如果被拆开发了,它不一定是按顺序到的,有的到的快,有的到的慢,这时候就需要收件方给发送方回信,回信东西收到没有,现在是啥情况。
确认号(ack或ack_seq):表示的是发送方期待的下一个字节的序列号。(占地32bit)
比如现在有10个快递都发出去了,收件方收到了快递1、快递2、快递5、快递7,按照顺序,它希望收到快递3,所以这里就会填3。
这个3有两个含义:
含义一,我希望下一个收到的是3。
含义二,3之前的都完整收到了,如果有什么意外发生,3之前的也不用再发了
5.✅️确认号的确认号
根据4.✔️TCP确认号中的内容,确认号是专门给收件方回复用的,那如何知道确认号现在到底有没有用?
ACK(注意是大写):这里可以填0或者1,填0就说明4.✔️TCP确认号中的确认号无效,填1则说明有效(占地1bit)
6.📏首部长度
根据1.🌸TCP快递单样式,我们知道首部的长度是不固定的,是20字节~60字节之间,那到底是多少呢?就填在这里。(占地4bit)
7.🔮为了未来
科学的发展总是在进步的,所以我们万一以后想写点什么,需要留余地。
保留:留些空白,万一以后要用,此处都填0。(占地6bit)
8.🚑URG
只要是发东西,总有着急的信息,和普通的信息,如果来了着急的信息,可以插队快速发送。
URG:紧急消息,可以填0或者1,0代表不着急,1代表着急(占地1bit)
9.💭PSH
只要是发东西,总有需要对方快速回复,或者回不回复无所谓
PSH:希望对方快速回复,可以填0或者1,0代表无所谓,1代表着急要回复(占地1bit)
10.🔂RST
有时出现重大错误,需要断了连接,这时候需要告诉对方
RST:可以填0或者1,0代表一切正常,1代表需要断了(占地1bit)
11.📞SYN
和打电话一样,开头的嘟嘟嘟,或者彩铃~
SYN:代表正在连接,可以填0或者1,1代表这是正在连接的信号,0代表不是连接信号,只有握手1和握手2需要填1,其他都是0(占地1bit)
握手的知识在上一集里:
电脑知识 | TCP通俗易懂详解 <一>-CSDN博客
12.☎FIN
和打电话一样,主动告诉对方结束了的那条信息
FIN:代表告知对方我方结束这段关系,可以填0或者1,1代表这是结束语,0代表一切正常,只有挥手1和挥手3需要填1,其他都是0(占地1bit)
挥手的知识也在上一集里:
电脑知识 | TCP通俗易懂详解 <一>-CSDN博客
13.🗔窗口
我们回到发快递这件事上,作为一个快递公司,每一个快递站都是有容量限制的,不能无限接受快递,所以我们需要告诉发送方,我这里还能接收多少快递,剩余有多少空间,就填在窗口(rwnd或rcvwnd)。(占地16bit)
13.👩⚖️检验和
简单判断一下前面写的内容会不会是错的。(占地16bit)
例:我打算发1、2、3、4,这几个数据,在发的时候我简单加一下1+2+3+4=10,我就把10填在检验和这里,如果中间发送的时候数据传错了,比如4不小心传成了6,那么数据就变成1+2+3+6=12,我一看,检验和是10,我收到的是12,说明数据传错了
这里是简单说明,只限于理解,不是真实情况
14.🚨紧急指针
在8.🚑URG 中,我们允许一些紧急数据插队,但如果紧急数据也有很多怎么办,我们需要给紧急数据排队,这个紧急指针就是给紧急数据排序。(占地16bit)
三、🖃TCP快递单填写(选填部分)
选项:这里可以填很多东西,例,在两个电脑发东西的时候,两边网速不一样,一般会按照网速最差的那个电脑的速度发送,比如腾旭服务器很厉害,但你电脑网速只有1M每秒,肯定不能按照腾旭服务器的速度给你发,你电脑接不住,所以两边需要提前协商一下,就写在这里。
填充:填表格是一行一行的,如果一行没写完,那就拿0补全
四、🏁结语
我是菌菌巧乐兹~希望用通俗易懂的语言来讲解程序知识~
如果觉得写的还行,请点个赞💛再走吧~