HCIA学习–TCP协议的一些简介,UDP协议、IP协议报头详解及TCP三次握手、四次挥手

  • Post author:
  • Post category:其他



目录


TCP协议​编辑


端口号


源端口


​编辑


目标端口


32位序号​编辑


32位确认序号​编辑


头部长度及各种标志位


4位首部长度​编辑


6位保留字段(没有使用)


URG(紧急字段)


PSH(急迫位)


RST


FIN


SYN(同步序列号)


ACK


TCP三次握手


目的


第一次握手


第二次握手


第三次握手


TCP四次挥手


第一次挥手


第二次挥手


第三次挥手


​编辑


第四次挥手


为啥是四次挥手不是三次


窗口大小


MTU


MSS


窗口


滑动窗口机制


校验和


​编辑


选项


UDP协议


IP协议


版本


首部长度


生存时间(TTL)


协议


首部校验和


IP协议分片(与TCP分段很像)


标志


标识


偏移量(fragment offest)


下面最后一点来根据我的理解讲解一下tcp的三次握手,和tcp的四次挥手


TCP协议


端口号

在两台主机中,可能存在多个跨网络的进程,就比如说你在听音乐的同时进入某个网页,这样就有了两个进程。所以为了区分进程就有了端口号,以便于本机数据到达了对端主机后,本机通过端口号找到对端主机提供的服务,对端主机处理完数据后通过端口号找到本机的对应的服务进程。端口号的作用实际就是标识一台主机上的一个进程。


再来总结一下端口号的内容

1.端口号是传输层协议的内容。

2.端口号是一个2字节16位的整数。

3.端口号用来标识一个进程,告诉操作系统,当前的这个数据要交给哪一个进程来处理。

4.一个端口号只能被一个进程占用

注意:

因为端口号是隶属于某台主机的,所以端口号可以在两台不同的主机当中重复,但是在同一台主机上进行网络通信的进程的端口号不能重复。此外

,一个进程可以绑定多个端口号,但是一个端口号不能被多个进程同时绑定。

源端口


如图所示源端口占两个字节(16位二进制数),源端口就是本机传输给目标主机后需要目标主机回复时,回复时本机进程的端口号。

举个例子:

A有个进程需要访问B的时候,A会自己动态生成一个1024-65535之间的端口号(1-1023著名端口号用于标记固定服务)告诉B返回数据应该返回到自己的那个接口。

目标端口

同样如图也是两个字节,目标端口就是对方将想要访问的请求传到咱这个目标主机后想要访问咱这个目标主机的那个服务的端口号,有了这个端口号就可以区分传来的数据要交给那个软件来进行分析。目的端口可以是0-1023范围内的知名端口。

举个例子:

A要打开一个网页首先要生成一个自己的源端口,然后就要使用到HTTP Web服务这个端口80,这个端口号就是目标端口。

32位序号

是在通讯过程中,某个传输方向上的字节流编号。


32位确认序号


用作目标主机对,本机发来的TCP报文段的响应。这个的值就是对应的序号加一。


头部长度及各种标志位

4位首部长度

8位一个字节一行四个字节,一共五行,一共20个字节。

但是我在书上查到了这种说法,首部长度指的是首部占32bit字的数目,包括任何选项。由于他是一个4比特字段,因此首部长度最长为60个字节。在解释一下这个字段的单位是32位字。(1个32位字长4字节) 所以当IP首部长度为1111(就是十进制15),首部长度就达到最大值60字节. 这个不常用,为减小开销,常用20字节。(首部长度0101)5*4=20。

6位保留字段(没有使用)

作用:万一在日后这个东西需要扩展别的功能,可以往这个6位保留字段填充。

URG(紧急字段)

与下面的16位紧急指针连起来用,用来表示紧急指针是否有效,URG标志为1说明紧急指针有效,需要紧急发送,优先处理。一般来说TCP发送数据都需要将数据放到TCP的接收缓冲区中,TCP缓冲区满了以后再向上传送。这个紧急数据是不需要进入缓冲区直接进入上层进程的。

PSH(急迫位)

提示接收端应用程序应该立即从TCP接受缓冲区读走数据,为之后的接受的数据腾出位置。当PSH为1的时候,数据是可以不用等待TCP缓冲区满了以后再向上交付。PSH数据包要和PSH到来之前就已经在缓冲区的数据包一起向上交付。

和URG不同的是PSH还是需要进入缓冲区而URG是不用进入缓冲区而直接向上交付。


RST

用来表示非正常的断开连接,当RSI置为1的时候,表示有链接错误需要重新建立连接。

FIN

表示连接正常断开,发送端完成任务。

SYN(同步序列号)

当SYN置为1,表示请求建立一个连接,携带SYN标志的TCP报文段为同步报文段;

ACK

只有当ACK=1时,确认序号字段才有效。




下面借TCP的三次握手、四次挥手来看一下各个标志位的用法。

TCP三次握手

目的

保证两台设备同时具备完整的收发

第一次握手

客户端发送同步序列号SYN=1,同时随机产生一个32位序号seq(假设seq=x)请求与服务端建立连接。服务端有SYN=1得知客户端要求建立连接。

如果第一次握手成功就可以判断,服务端就可以确认客户端发送没有问题,自己接受没有问题。

第二次握手

第二次握手服务端收到客户端的连接请求后,需要回复让客户端知道服务端收到了,服务端向客户端发送的数据包里ACK=1、确认序号ack=x+1,同时服务端也需要向客户端发送一个亲求连接数据包里SYN=1、seq随机一个数(seq=y)。因为这个两个请求可以在同一时间发送,所以可以将两次合并在一次握手中发送。

第二次握手成功就可以,客户端就可以判断,客户端发送正常,接受正常,对方发送正常,接受正常。但是现在呢可以看到服务器无法去判断对方接受正常,自己发送正常,所以客户端需要在来一次握手。

第三次握手

第三次握手客户端回复服务端的请求ACK=1,确认序号ack=y+1。

第三次握手成功后客户端就可以判断服务器接收正常,自己发送正常了。

TCP四次挥手

开始挥手

第一次挥手

这里客户端和服务端都可以先发送断开连接的请求,假设现在是客户端先发送的断开连接的请求,这时客户端就会发送一个数据包数据包中FIN置为1序号seq为a

第二次挥手

这时服务端回复一个确认包给客户端ACK置为1,确认序号为ack+1,序号seq=b

第三次挥手


第三次挥手服务端也想断开连接,也发送了FIN请求这时序列号和确认序列号都不变因为只是加了一个FIN请求

第四次挥手

第四次挥手客户端给服务端回包ACK置为1 确认序列号ack=b+1 seq=a+1。

为啥是四次挥手不是三次

假设是客户端先要求断开连接,客户端在进行完前两次挥手后,服务端可能还在处理之前发过来的数据,所以服务端的断开连接请求需要等自身处理数据完后才可以发送,也就是服务端对客户端的回复并不能和服务端的断开连接的请求合在一起发送,两者可能并不在同一时间结束。

窗口大小

在数据包很大的时候就会将这个数据包拆封成多个数据包 ,如何拆封是要看

MTU

最大传输单元=规定数据来到数据链路层大小不超过1500字节

MSS

最大段长度,应用层数据长度=MTU-网络层报头-传输层报头

窗口

发送端发送数据包,如果都要接受端确认应答后才可以。这样每次都一来一回太浪费时间。为了避免这种情况,TCP引入窗口概念。一次可以收发多条数据。

滑动窗口机制

测试数据传输带宽瓶颈,尽可能利用带宽的最大传输值来传输数据,使用这个滑动窗口机制可以探测出双方链路的最大传输能力。

发送端发送了三个数据,这个数据带一个win值指现在有多少个数据,然后接受端可以接受三个。这时下次发送端在就会扩大一次发送5个数据也就时win=5,然后接受端只可以接受4个数据,他就会调整下次的win值,win值不恒定(受限于网络等各种因素)

这个win值时一次次试出来的最开始发送端是不知道这个win值是多少

校验和


顾名思义用来校验

选项

是一些可选的数据放在TCP中,TCP协议没有可选项的话其报头固定长度为20个字节。

UDP协议


源端口,目标端口与TCP协议中一样的含义


UDP长度同样是指UDP报头长度看图得最小为8个字节


校验和同理用作校验


IP协议(无连接不可靠)

版本

指IPV4或者IPV6,IPV4用4位二进制0100表示,IPV6用用四位二进制0110表示

首部长度

IP报头长度,下面有一个可选字段,意思和TCP中一样。IP报头长度最短位二十个字节

区分服务

不同服务,然后有不同的数据流,用来做策略

总长度

报头长度加负载长度(负载长度=数据长度)

生存时间(TTL)

指数据包经过路由器次数,每经过路由一次TTL减一,一旦TTL减为0路由器丢弃该数据包。

协议

标识上层(传输层)所用协议,靠这个号码,IP协议知道要将数据发向那个协议(TCP协议号为6)

首部校验和

只校验IP首部报文

IP协议分片(与TCP分段很像)

IP分片可以帮助UDP分段(TCP可以分段,但是UDP不可以自己分段)

标志

第一位保留

第二位:Don`s fragment需不需要分片

第三位:Mon fragment 分片没分够需要分更多得片


标识

分片之后同一个数据包靠标识确认,标识相同就是同一个数据包。

偏移量(fragment offest)

指示数据包分割完后拼起来的位置,最后的数据包按这个偏移量来进行重组。

下面最后一点来根据我的理解讲解一下tcp的三次握手,和tcp的四次挥手

TCP三次握手和TCP四次挥手过程



版权声明:本文为banliyaoguai原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。