zoukankan      html  css  js  c++  java
  • 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
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如有问题或建议,请多多赐教,非常感谢。
  • 相关阅读:
    Go之运算符
    前端开发之工具库
    MVC与MVVM
    开发工具之Vscode编辑器
    常用名词汇总
    python常见错误总结
    Python之常用第三方库总结
    PHP程序员的成长路线
    web 应用常见安全漏洞
    redis和memcached的区别详解
  • 原文地址:https://www.cnblogs.com/ccku/p/13635171.html
Copyright © 2011-2022 走看看