• 使用wireshark 抓取 http https tcp ip 协议进行学习


    使用wireshark 抓取 http https tcp ip 协议进行学习

    前言

    本节使用wireshark工具抓包学习tcp ip http 协议

    1. tcp

    1.1 tcp三次握手在wireshark中的体现

    1.1.1 三次握手过程

    1.1.1 wireshark中三次握手过程

    在wireshark中抓一次三次握手过程

    1. 客户端
      客户端发送SYN=1 的请求连接的标记位,以及一个随机序列号X

    2. 服务端
      服务端发送一个ACK标志位(ack之前的syn),随之一个ack号码为X+1 确认接收到
      并且也会发送一个和当时客户端建立连接时相同的动作,发送SYN号码表示要和客户端进行连接,并且从新生成一个随机序列号Y

    3. 客户端
      接受到后Ack服务端的SYN 返回ACK标志码并且把Y+1进行ack返回,并且发送序列号为当初的x+1

    序列号使用来记录"对方期待的序列号" 发送方第一次和第二次的序号相差第一次发送的数据长度,
    当发送 SYN或 FIN时长度为空时,也占一个长度,下次加一

    其中的FLag位

    占六位 依次为 URG、ACK、PSH、RST、SYN、FIN。
    换算成十六进制此处如果是SYN则为0x02 ACK为 0x10 ,既有SYN也有ACK则为0x12

    1.2 tcp协议组成部分

    • 头部20字节

    1.3 四次挥手过程

    1. 发送方 发送FIN标记 需要释放连接 seq=u (此时代表发送方的数据都发送完成了)
      此时发送方进入连接结束的第一个等待状态 FIN-WAIT-1

    2. 接收方 ACK标记 seq=v ack =u+1

    • 发送方在接受到接受方这个报文时进入第二个等待状态 FIN-WAIT-2
    • 发送方在发送完这个报文后进入关闭等待的状态 CLOSE-WAIT
    1. 接受方发送FIN报文 (此时他的全部数据也都发送完成了)
    • 发送方发送FIN=1 ACK=1 seq=w ack = u+1 (重复对当时发送方的报文ack)
    • 此时接收方进入最后确认状态 LAST-ACK 等待发送方的确认
    1. 连接方发送确认断开
    • ACK=1 seq=u+1 ack=w+1

    2. ip协议

    2.1 ip协议组成部分

    • IPv4的头部结构长度为20字节,若含有可变长的选项部分,最多60字节。

    3. http协议

    • http://<主机>:<端口>/<路径>
      主机可以是ip或域名,DNS会将域名转化为ip
    • HTTP请求的方法
    • http的协议

    4. https协议

    • http明文传输不安全 通过SSL对数据进行加密 加密后的数据传输更加安全
    • 非对称加密:加密和解密使用的钥匙不一样 (公钥 私钥)
    • 对称加密则是加密解密使用相同的密钥
    • https 综合的使用了非对称加密和对称加密,并且他们生成的密钥没有经过传输

    4.1 https协议组成部分

    https 为http上加了一层SSL SSL 可以是TSL协议,在443端口TCP三次握手后会建立SSL连接

    4.2 https协议的流程

    1. 客户端发送Clien Hello
      生成随机数 1 。协议版本 支持的加密算法

    2. 服务器
      生成随机数2,3 确认客户端加密的算法 数字证书

    3.客户端检查

    • 确认整数是否有效
    • 生成随机数3
    • 使用服务器的公钥(证书中取出)加密随机数3
    • 发送给服务端 此时服务端和客户端都同时拥有了随机数1 2 3
      此后就根据随机数1 2 3 和相同的加密算法生成对称密钥

    后续

    5. udp

    • 头部 8 字节

    一字节8位

    结语

    文章简要的对http https tcp udp ip 协议的内容以及交互流程进行了解读。如果有问题和疑问请在评论区指出,多谢大神指教。

    参考资料

  • 相关阅读:
    [转]你每天90%的注意力被浪费了
    通过浏览器navigator获取当前经纬度位置
    Sublime Text 3 安装、插件与个人配置
    ios判断手机号是否可用
    AFNetworking提示3840 Unescaped control character around character XXX
    理解OC“属性”这一概念
    熟悉Objective—C
    如何在自己的应用中打开第三方应用程序
    ios多线程开发总结
    UIView的Touch事件UIControlEvents详解
  • 原文地址:https://www.cnblogs.com/wei57960/p/12180382.html
Copyright © 2020-2023  润新知