• Web实验理解数据的封装和解封装


    实验,利用web服务理解数据的封装和解封装

    实验拓展

    # Client配置:
    ip:10.1.1.1
    netmask:255.255.255.0
    
    # web服务器配置:
    ip:10.1.1.2
    netmask:255.255.255.0
    
    httpserver:
    port:80
    # index.html
    this is index.html
    

    实验过程

    1.交换机LSW1的Eth 0/0/1进行抓包

    2.使用Client1访问web服务

    3.查看抓取的包

    # TCP三次握手建立:
    
    25	52.875000	10.1.1.1	10.1.1.2	TCP	nfs > http [SYN] Seq=0 Win=8192 Len=0 MSS=1460
    26	52.875000	10.1.1.2	10.1.1.1	TCP	http > nfs [SYN, ACK] Seq=0 Ack=1 Win=8192 Len=0 MSS=1460
    27	52.875000	10.1.1.1	10.1.1.2	TCP	nfs > http [ACK] Seq=1 Ack=1 Win=8192 Len=0
    
    # 首先是Client和web客户端进行TCP的三次握手
    客户端向服务端进行TCP的连接请求,发送SYN请求位,序列号为0 seq=0
    
    服务器端首先同意请求 发送ACK确认位,然后确认位ack=0+1,进行确认,同时也发送自己SYN请求位,seq序列号为0 seq=0
    
    客户端收到服务器的确认报文后,还要向服务器发出确认 ACK ,确认号为1  ack=0+1(服务器的发送序号+1) ,序号为0+1(客户端第一次发送的序号+1)
    
    # 这个过程可以这样理解:
    
    客户端:“您好,服务器,我有数据要传给你,建立连接把”
    服务器:“好的,我已准备好”
    客户端:“好的,谢谢你的同意”
    
    # 数据封装过程:
    # 应用层:
    Hypertext Transfer Protocol
    # 传输层:
    Transmission Control Protocol, Src Port: clearvisn (2052), Dst Port: http (80), Seq: 1, Ack: 1, Len: 164
    # 网络层
    Internet Protocol, Src: 10.1.1.1 (10.1.1.1), Dst: 10.1.1.2 (10.1.1.2)
    # 数据链路层:
    Ethernet II, Src: HuaweiTe_72:30:52 (54:89:98:72:30:52), Dst: HuaweiTe_d0:52:03 (54:89:98:d0:52:03)
    # 物理层
    Frame 12: 218 bytes on wire (1744 bits), 218 bytes captured (1744 bits)
    
    # 过程描述
    
    应用层接收应用层http协议产生的数据,上交给传输层;
    
    传输层根据应用层的http协议封装TCP协议(源端口2052和目的端口80和窗口大小等),生成数据段,上交给网络层
    
    网络层封装ip头部(包括TTL生存时间255,protocol协议号为 6,源ip和目的ip等),生成数据包,上交给数据链路层
    
    数据链路层封装帧头和帧尾,帧头包括目的mac、源mac,根据网络层的协议类型封装类型字段 0x0800(IP),生成数据帧,上交给物理层
    
    数据帧到达物理层,物理层把数据帧转为比特留,交给物理介质
    
    # 解封装过程
    
    物理层接收客户端发来的二进制数据,转化为数据帧,上交给数据链路层
    
    数据链路层接到数据帧,将去掉帧头和帧尾,根据帧头中的类型(0x0800)交给网络层的IP协议进行处理
    
    网络层收到数据,将去掉IP头部,根据IP头部中的协议号6和ip地址交给传输层TCP的进行处理
    
    传输层收到数据包,将去掉TCP头部,根据TCP头部中的端口80交给应用层的HTTP协议进行处理
    
    应用层收到原始数据,数据传输完成
    

    作者:ccku
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如有问题或建议,请多多赐教,非常感谢。
  • 相关阅读:
    创建 Smarty 对象
    C#设计模式——命令模式(Command Pattern)
    Spring.Net 简单入门学习
    设计模式六大原则(6):开闭原则
    设计模式六大原则(5):迪米特法则
    设计模式六大原则(4):接口隔离原则
    设计模式六大原则(3):依赖倒置原则
    设计模式六大原则(2):里氏替换原则
    设计模式六大原则(1): 单一职责原则
    超简单!asp.net core前后端分离项目使用gitlab-ci持续集成到IIS
  • 原文地址:https://www.cnblogs.com/ccku/p/13635171.html
Copyright © 2020-2023  润新知