Linux第一阶段网络知识补充

作者: 一只打不死的小强 | 来源:发表于2019-07-10 22:28 被阅读110次

    主要记录 主机传输数据封装与解封装的过程 TCP的三次握手和四次挥手 子网掩码的划分 DNS协议原理


    第一部分 数据的封装与解封装

    数据的封装过程
        应用层
        表示层    --- data
        会话层
        传输层    --- TCP/UDP 头部信息(目标端口 源端口) + data
        网络层    --- IP头部信息(目标IP 源IP) + TCP/UDP 头部信息(目标端口 源端口) + data 
        链路层    --- MAC头部信息(目标mac 源mac)+ IP头部信息(目标IP 源IP) + TCP/UDP 头部信息(目标端口 源端口) + data
        物理层    --- bit流 0101010101010101010101
        网卡      --- 调置 bit流---高低电压
    

    数据解封装的过程
        网卡      --- 解调 高低电压---bit流 
        物理层    --- bit流 0101010101010101010101
        链路层    --- MAC头部信息(目标mac 源mac)+ IP头部信息(目标IP 源IP) + TCP/UDP 头部信息(目标端口 源端口) + data
        网络层    --- IP头部信息(目标IP 源IP) + TCP/UDP 头部信息(目标端口 源端口) + data
        传输层    --- TCP/UDP 头部信息(目标端口 源端口) + data
                      netstat  -lntup|grep 目标端口
        应用层    --- data
    

    2.当A主机访问B主机的服务,封装与解封装的详细过程

    封装过程
    说明:    1.当PC01要访问PC02的22端口时,应用层的数据按照TCP/IP模型在传输层封装=TCP的头部+源端口(1000,随机)+目的端口(22)。
              2.到达网络层进行封装,源ip(自身IP)+目的IP(02.02,对端IP)。
              3.到达数据链路层进行封装,源MAC(自身MAC),目的MAC(##为网关的MAC地址,因为到达不同网段要通过网关,所以封装的是网关的MAC##)。
              4.最终到达物理层变为高低电压,通过网线进行传输。 
    
    解封装过程
    说明:到达路由器之后
    1.路由器进行进行拆包,拆到二层的时候看源目MAC地址
      可以看到目的MAC是访问路由器的eth0的接口。
    2.继续拆包,拆到网络层看访问的IP是02.02,在路由器的路由表中。可以进行转发。
    3.转发之前先进行封装,数据链路层将源MAC变为eth1的mac地址,目的mac因为不知道先进行全F封装。
    4.从Eth1口出去以后变为高低电压的模式。
    5.因为Eth1的目的mac为广播的形式,在同一网段的进行广播,收到广播的主机进行拆包。
      当拆到网络层的时候看到目的IP为自己的IP时,进行完成上一层的解封装。完成访问。
    

    从PC02到PC01回包的过程

    说明:
    1.传输层:TCP包头+源端口(自己)+目的端口(1000)+date
    2.网络层:源IP(自己)+目的IP(pc01)+date
    3.数据链路层:源MAC(自己)+目的(网关的MAC)
    4.变为高低电压从网线传输出去
    
    到达路由器:
    1.进行拆包,到达数据链路层,查看目的MAC为自己的eth1口,是访问自己。
    2.继续进行拆包,到达网络层,查看访问的IP为路由器路由表中的网段,可以进行转发。
    3.路由器进行封装,将源MAC变为eth0的mac地址,目的MAC为pc01的mac,(因为之前PC01已经发包到达PC02,所以知道PC01的mac,所以不需要进行广播了)
    4.pc01收到回包之后逐渐进行解封装,至此,双方完成通信。
    

    第二部分 ARP协议

    ARP协议

    1.当两台主机通信时,在二层封装的时候,无法得知对端的mac地址,这时需要通过arp地址解析协议去得知对端的mac地址,当对端的主机进行ARP回包的时候,来完成二层mac的封装。
    2.当主机连接交换机的时候,当PC01封装成ARP的包,源目地址为已知,源MAC为自己,目的MAC为交换机连接的接口。
    3.到达交换机的时候,交换机拆包后进行arp广播,每台主机都收到了ARP的广播后,正确的主机拆包后得到ARP的请求包。
    4.正确的主机会回复ARP的响应包。arp+源目IP+源目MAC(注不是交换机接口的MAC,而是ARP主机请求的MAC)。主机且会生成一个ARP表。
    5.此时交换机也会生成一个MAC表。(主机1的IP和主机1MAC,主机2的IP和主机2的MAC)经过几次广播以后,交换机的MAC表会完善起来。
    6.交换机回包回到主机01后,主机也会记录一个arp的表。(最后所有的主机都会完善自己和其他主机通讯过的ARP表。)
    7.没通信过的主机也会记录之前其他主机的MAC地址。
    

    ARP协议原理:
    1. 发送arp请求包 获得arp响应包 --- 获得主机mac地址
    2. 建立arp表 建立主机ip地址和mac地址对应关系
    3. 减少交换网络中广播包产生


    ARP表生成方式:
    动态生成: 1个小时 清空  2个小时
    自动发送广播包,动态完善arp表
    缺点:会重新发送广播包
    优点:可以实时更新arp信息
    应用场景:办公室 教室
    
    静态配置: 添加  删除
    手工添加
    缺点: 不能实时更新arp信息,影响通讯
    优点: 基本上杜绝了广播包的产生
    应用场景:机房IDC  设备不会经常变化
    

    第三部分 TCP的三次握手和四次挥手

    TCP协议:传输控制协议 面向连接网络协议 可靠传输
    UDP协议:用户报文协议 无连接网络协议 不可靠(注重传输效率)


    1.TCP的报文结构

    image

    注意:主要了解源目端口,ACK,SYN,FIN。
    控制位:
    syn =1 请求建立连接
    fin =1 请求断开连接
    ack =1 发送确认信息


    2.为什么端口号是1-65535

    因为端口占用的bit位是0-15 所以6是2的16的次方。65536 但是0是TCP和UDP不识别的端口号所以为65535。
    

    3.TCP三次握手的过程

     三次握手过程:
        第一次握手:客户端    发送TCP报文            (syn seq=X)
        第二次握手:服务端    接收TCP报文              发送TCP报文(syn ack ACK=X+1 seq=Y)
        第三次握手:客户端    接收TCP报文              发送TCP报文(ack seq=X+1 ACK=Y+1)
    

    4.四次挥手的过程

    四次挥手

    注:四次挥手不一定是客户端先发起的


    四次挥手过程(也有三次挥手的状态,未等到服务端的ACK状态,直接等到了服务端的fin状态。):
        第一次挥手:客户端    发送TCP报文(fin ack)
        注:ack 为之前连接的ack确认。
        第二次挥手:服务端    接收TCP报文    发送TCP报文(ack)
        第三次挥手:服务端    发送TCP报文(fin 再确定断开 ack 过程确认)
        第四次挥手:客户端    发送TCP报文(ack)
    

    5.TCP的11种状态

    TCP的五种状态
    六种状态
    五种状态
    1.当客户端和服务端开始都为关闭的时候为CLOSED(1)状态
    2.当服务端启动好服务以后为LISTENING(2)状态,别人访问才能接收。
    3.当客户端发送完SYN后变为SYN_SENT(3)状态。
    4.服务端收到syn会完成第二次握手的过程 变为(4)SYN_RCVD状态
    5.客户端接收到服务端发送的SYN ack后,再发个ACK的确认,变为(5)ESTABLISHED的状态。
    6.当收到客户端的fin后,服务端由原来的ESTABLISHED的状态变为CLOSE_WAIT(6)
    7.客户端发完FIN后变为FIN_WAIT1(7)的状态,等待接收服务端的ACK状态。
    8.客户端接收到服务端的ACK以后,会变为FIN_WAIT2(8)的状态。
    9.当客户端收到FIN第三次挥手的过程后,客户端会发送ACK,变为TIME_WAIT(9)的状态。
    10.服务端发完FIN后会变为CLOSE_WAIT(10)的状态
    11.当收到客户端的ACK之后,服务端会变为LAST_ACK(11)的状态。
    

    第四部分 IP地址的子网划分

    举例:192.16.4.0/27
    问题:可以有几个子网 子网掩码 每个子网主机范围


        1. 子网个数:2的n次方 n表示借用多少个主机位变为子网位
        2. 网络地址:主机位全为0的地址
        3. 广播地址:主机位全为1的地址   
    分析:占用了3个主机位
    所以子网的个数为2的3次方 8个子网
    每个子网的范围的块大小是 256-224=32
    
    所以每个子网的范围 每个子网的主机范围
    192.168.4.0-192.168.4.32 192.168.4.1-192.168.4.31
    192.168.4.32-192.168.4.64 192.168.4.32-192.168.4.63
    192.168.4.64-192.168.4.96 192.168.4.64-192.168.4.95
    192.168.4.96-192.168.4.128 192.168.4.96-192.168.4.127
    192.168.4.128-192.168.4.160 192.168.4.127-192.168.4.159
    192.168.4.160-192.168.4.192 192.168.4.160-192.168.4.191
    192.168.4.192-192.168.4.224 192.168.4.191-192.168.4.223
    192.168.4.224-192.168.4.255 192.168.4.224-192.168.4.254

    第五部分 DNS协议的原理

    DNS协议解析图

    DNS domain name system 域名解析系统 帮助人类将域名解析为IP
    IP地址是网络通讯时要使用的地址
    域名访问网站记录网站服务器名称


    解析原理:当一台主机要访问一个网站时(jd.com),本地查询解析关系,是否有对应的解析关系。去查DNS缓存(之前之前有记录)。
    #ipconfig/displaydns 去查看
    2.如果没有还会去本地的hosts去找 C:\Windows\System32\drivers\etc
    #linux /etc/hosts 查找
    3.去本地localdns服务器(网卡里都已经配置完毕)114.114.114.114(江苏电信) 223.5.5.5(阿里) 180.76.76.76(百度)。
    如果DNS服务器有解析记录的话就返回给主机,解析完成。
    4.如果没有localdns服务器会继续往上走,去请求根域名服务器。(全球只有13台)。
    #域名结构:www.oldboy.
    #.代表根域名服务器    .com .cn 一级域名申请的域名
    #.jd.com .baidu.com   二级域名服务器
    5.本地域名服务器请求根域名服务器是否知道jd.com的对应IP地址是什么
    6.根域名服务器不知道,可以去请求一级域名服务器是否知道。一级域名不知道的时候去请求二级域名服务器。
    7.二级域名知道可以查到jd.com,并能对应解析IP地址。
    #一个域名和一个ip地址的记录,叫做A记录。
    8.把记录信息告知给localdns服务器,localdns会在本地缓存一份,以免下次还要进行同样的解析。
    9.再将A记录发送给主机,主机也会缓存一份。以免下次再进行查询。
    10.主机得到IP地址,然后进行封装,把数据包发送给本地的路由器,路由器和互联网连接。
    11.最终会发送到京东的网站上,京东网站再进行回复,最终会访问到京东。
    #递归查询:直接找localdns进行查询
    #迭代查询:中间会经过很多服务器进行查询。
    

    相关文章

      网友评论

        本文标题:Linux第一阶段网络知识补充

        本文链接:https://www.haomeiwen.com/subject/qlbkkctx.html