tcp报文
如图所示
各字段占用的字节数及其含义:
- 源端口跟目的端口各占2个字节。用于表示双方主机。
- 序列号,4个字节,用来标识从TCP源端向TCP目标端发送的数据字节流,它表示在这个报文段中的第一个数据字节。
- 确认号,4个字节,ACK标志为1时,确认号字段有效。它包含目标端所期望收到源端的下一个数据字节。
- 数据偏移,4bit,表示tcp数据报文距离tcp报头偏移量。
- 保留位,6bit,通常设置为0.
- 6个标识位: URG:值为1,紧急指针(urgent pointer)有效。(1bit) ACK:值为1确认序号(acknowledgement )有效。(1bit)
PSH:值为1传送(push)接收方应该尽快将这个报文段交给应用层。(1bit) RST:值为1(reset) 重建连接。(1bit)
SYN:syn = 1(synchronous)发起一个连接。(1bit) FIN:fin=
1(finish结束)释放一个连接。(1bit)- 窗口:2个字节,表示本次发送的数据目标主机接受数据的字节数。
- 校验和,2字节校验报文头和数据部分。并且有目标主机进行验证。
- 紧急指针,2字节,它是一个偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。
- 填充,1字节,可能包括"窗口扩大因子"、"时间"等选项
三次握手
客户端发送请求讯号,服务器收到并回应,客户端收到该回应并回复
打电话:拨通电话,喂?是我(双方互相确认有去有回)
四次挥手
双方都可主动触发,A向B发送挥手请求,B收到并回应,B在将剩余数据传输完成后或者确认数据传输完成后发送挥手请求,A收到并回应且进入两倍MSL等待时间后断开连接,B在收到A的回应后断开连接,(两倍MSL等待时间:A以防B传输的文件未完全发送完成而进行等待)可视情况进行,有可能直接关机。
网络通信过程
简单四步:路由、ARP、三次握手、数据通信
路由:把一个数据包从一个设备发送到不同网络里的另一个设备上去。这些工作依靠路由器来完成。路由器只关心网络的状态和决定网络中的最佳路径。路由的实现依靠路由器中的路由表来完成。
简单来讲就是让两台主机处于相同网段或相邻的路由器及主机处于相同网段,不同网段无法通讯。
ARP:路由表缓存,地址解析,下次访问可直接通过该记录进行访问
三次握手:同上
数据通信:以上步骤执行完成即可进行数据通信,以四次挥手结束
ip计算
算法公式
网络数=2^可变的网络ID位数
主机数=2^主机ID的位数-2
网络ID=IP与子网掩码netmask
CIDR表示法,可以表示网络的ID的位数,IP/网络ID的位数
netmask子网掩码: 可以表示网络ID的位数,32bit二进制,对应于网络ID的位为1,对应于主机ID的位为0
划分子网:网络ID向主机借位,如果借N位,则划分2^N个子网
举例:
201.222.200.111/18计算主机数?子网掩码?(ip数为32位)
#主机数:
2^(32-18)-2=16384
#子网掩码:
/18网络id位数,换算可得201.222.192.0
255.255.11000000.0
201.222.11001000.111
201.222.11000000.0
当A(10.0.1.1/16)与B(10.0.2.2/24)通信,A如何判断是否在同一个网段?A和B能否通信?
A的子网掩码为255.255.0.0, B的子网掩码为255.255.255.0
A与B得255.255.0.0,因此当A向B发文件可通
B与A得255.255.255.0,因此B向A不通
如何将10.0.0.0/8划分32个子网?求每个子网的掩码,主机数。
1)每个子网的netmask?255.248.0.0
255.11111000.0.0
10.00000 000.0.0
2)每个子网的主机数有多少?
2^(32-13)-2=524286