第四行:
第一字段:4bits,报文首部长度,通常报文首部长度为24Bytes~60Bytes;
第二字段:标志位:13bits
前三位:保留位;
4-6位:特殊标志位;
URG:紧急指针标志位,优先转发标志位;URG指针置一,后面的16bits的紧急指针才能生效
ACK:确认标志位,保证数据传输可靠性;
PSH:推进标志位
RST:重置标志位
SYN:同步标志位,三次握手建立连接时必选的标志位
FIN:结束标志位,四次握手拆除连接时必选的标志位;
第三字段:窗口大小,16bits;一次并发传输的数据段的数量;
第五行:
第一字段:数据段校验和,16bits,保证数据的完整性;
第二字段:紧急指针,16bits,在URG标志位置一时,哪个数据段更紧急
第六行:
选项:TCP协议分段的标准;TCP协议的数据分段数间戳;...
TCP协议的确认机制:
1.发送方在接受到接收方返回的确认数据之前,不会继续发送后续的数据段;
2.在指定定的时间内,发送方没有接收到接收方返回的确认数据,则重新发送此前发送的数据段;
数据传输过程:
发送方打算把应用数据发送给接收方:
1.将给出的主机名解析为此次通信的目标主机IP地址;
2.将应用层协议解析为传输层协议加传输层端口号的组合(套接字),进而完成传输层封装;
3.如果传输层使用TCP协议,则还需要为TCP协议通信建立连接;
4.如果需要建立TCp连接,必须能够在网络层正确封装IP地址以及在数据链路层正确封装MAC地址;
5.在ARP缓存中,如果没有对应的目标IP地址条目信息,则需要广播ARP解析目标主机地址;
6.解析获得目标主机的MAC地址后,则可以通过三次握手建立TCP连接;
7.为应用层程序提供数据发送;
8.在数据传输完成之后,需要拆除TCP连接;
子网掩码(Netmask)
组成:32bits二进制组成,与IPv4的地址位数相同;以点分十进制进行标识;
作用:用来标识IPv4地址中的网络部分和主机部分各占多少个二进制位;凡是万罗部分就用“1”表示,凡是主机部分,就用“0”表示;
A类地址的标准子网掩码:255.0.0.0
B类地址的标准子网掩码:255.255.0.0
C类地址的标准子网掩码:255.255.255.0
将IPv4的地址与其相对应的子网掩码做逻辑与运算,得到的结果是:该IPv4地址所属的网络范围的网络地址;
网络地址:主机位全都是“0”的IP地址;也被称为网络名称;也可以称为逻辑网段;
定向广播地址:主机位全都是“1”的IP地址;在特定的逻辑网段中能够被应用的广播地址;
以上两个地址通常是不能分配给主机使用的;
在一个逻辑网段中主机位全0和主机位全1的地址,必须排除在可以地址范围之外;
子网掩码地表示方法:
1.全掩码表示法:172.16.72.1/255.255.0.0
2.前缀表示法:172.16.72.1/16
192.168.0.1/16 CIDR,Classless Inter-Domain Routing,无类域间路由;
10.1.1.1/28 变长子网掩码;
结论:
主机通过将自身的IP地址和目标主机的IP地址分别与自己的子网掩码进行逻辑与运算,最终得到的结果就是两台主机的逻辑网络地址;
然后将此二结果进行比较,如果相同,则表示此二主机在同一逻辑网络范围之内,因此可以直接使用ARP协议获取对方的MAC地址,从而实现通信;如果不相同,则意味着此二主机在不同的逻辑网络范围之中,于是必须借助于网关才能实现二主机的相同通信;
网关:可以理解为一个逻辑网络的门户,或者是出入口;现在多用路由器充当网关设备;
注意:一旦数据传输经过网关等路由设备,则其数据链路层的封装格式会彻底改变;即:重新封装数据的源MAC地址及目的MAC地址;
对于主机来说,在一次通信的过程中,需要使用配置在自身网络设备接口上的子网掩码判断目标主机与自身IP地址是否在同一逻辑网段;
对于路由器来说,需要利用路由表中路由条目上所携带的子网掩码,来判断目标主机所在的网络地址,是否存在与本地路由表中,若果有,则按照路由表知识进行转发;否则直接丢弃不予转发;
Linux网络配置网络层中的IP地址是内核的属性这是对Linux而言的!!!
在Linux系统中,网络功能的实现被分成两部分存放:
1.存放于内核空间中的协议栈:
包括:物理层、数据链路层、网络层及传输层协议;
实现通信子网的功能
2.存放与用户空间中的应用程序协议:
包括:会话层、表示层及应用层协议;
实现资源子网之功能;