使用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 协议的内容以及交互流程进行了解读。如果有问题和疑问请在评论区指出,多谢大神指教。

参考资料

使用wireshark 抓取 http https tcp ip 协议进行学习的更多相关文章

  1. TCP/IP协议组学习笔记

    TCP/IP协议族学习笔记: 一.基础概念: (1)TCP(Transmission Control Protocol) 传输控制协议. (2)IP(Internet Protocol)网际协议.IP ...

  2. TCP/IP协议原理学习笔记

    昨天学习了杨宁老师的TCP/IP协议原理第一讲和第二讲,主要介绍了OSI模型,整理如下: OSI是open system innerconnection的简称,即开放式系统互联参考模型,它把网络协议从 ...

  3. 结合Wireshark捕获分组深入理解TCP/IP协议之以太网帧

    摘要:     本文摘抄并整理了以太网相关理论知识,包括CSMA/CD协议机制及工作.LAN互连,详细分析了Ethernet II帧格式,最后给出Ethernet II帧实例. 一.以太网[1] 1. ...

  4. 结合Wireshark捕获分组深入理解TCP/IP协议之IP协议

    摘要:     本文简单介绍了网络层理论知识,详细讲解了IP数据报各个字段,并从Wireshark俘获分组中选取IP数据报进行分析,也阐述了分组和分片的区别.   一.IPv4数据报     网络层是 ...

  5. TCP/IP协议的学习笔记

    1.OSI和TCP/IP的协议体系结构 OSI是开放系统互连参考模型,它的七层体系结构概念清楚,理论也比较完整,但它既复杂又不实用.而TCP/IP是一个四层的体系结构,它包含应用层.传输层.网际层和网 ...

  6. ARP抓包实战小结-TCP/IP协议学习

    2011-12-26 21:36:47 图1 一,环境说明 硬件连线.PC与2440开发板直接用网线连接. PC的ip地址:192.168.0.107.2440开发板的ip地址:192.168.0.1 ...

  7. TCP/IP协议学习(四) 协议概述

    生活中有舒适区,借口成为懒惰的护身符,学习也有舒适区,逃避便是阻止进步的最大障碍. 经过半年多嵌入式方面的工作和学习,我提高了很多,但同时我也对自己所面临的问题逐渐清晰: 1. 偏于实践,理论基础不牢 ...

  8. 利用wireshark抓取TCP的整个过程分析。

    原文地址:https://www.cnblogs.com/NickQ/p/9226579.html 最近,已经很久都没有更新博客了.看看时间,想想自己做了哪些事情,突然发现自己真的是太贪心,到头来却一 ...

  9. TCP三次握手和四次挥手及wireshark抓取

    TCP的三次握手与四次挥手的详细介绍: 三次握手: 第一次握手(SYN=1, seq=x): 客户端发送客户端发送一个 TCP 的 SYN 标志位置1的,指明客户端打算连接的服务器的端口,以及初始序号 ...

随机推荐

  1. Git 初始化及仓库创建及操作

    一.基本信息设置 1.初始化设置用户名 2.初始化设置用户名邮箱 备注:该设置在Github仓库主页显示谁提交了该文件. 二.初始化一个新的Git仓库 1.创建文件夹 mkdir test 2.在文件 ...

  2. springboot源码解析-管中窥豹系列

    一.前言 Springboot源码解析是一件大工程,逐行逐句的去研究代码,会很枯燥,也不容易坚持下去. 我们不追求大而全,而是试着每次去研究一个小知识点,最终聚沙成塔,这就是我们的springboot ...

  3. java-GUI编程学习总结

    狂神说java-GUI编程学习总结 1.简介 2.AWT 2.1.实现如图1-2 (1)面向过程写法 (2)内部类写法 (3)完全改造成面向对象 3.Swing 3.1.鼠标花点 3.2.弹窗 3.3 ...

  4. codeforces 6E (非原创)

    E. Exposition time limit per test 1.5 seconds memory limit per test 64 megabytes input standard inpu ...

  5. 关于malloc/free用法

    和很多人一样,我一直觉得new/delete和malloc/free的用法很随意,直到我真正遇到了麻烦,才想着去好好区分一下. (1)首先mallo函数原型void* malloc(size_t).头 ...

  6. 1. mac 手动安装nodejs搭建vue环境

    为什么选择手动安装nodejs呢? 因为使用mac自动安装还要更新homebrew,还要安装xcode tool, 太费劲了,不如手动安装, 卸载起来也方便 再一个, 我是后台开发者, 对前端页面, ...

  7. 前端知名人士 All In One

    前端知名人士 All In One 前端名人堂(中国) https://node.fequan.com/lecturer/ JavaScript的过去.现在和未来 1995年,Brendan Eich ...

  8. GitHub Ribbons : 谈网站的安全性-资源链接如何 预防/实现 爬虫的批量下载!

    GitHub Ribbons : 谈网站的安全性-资源链接如何 预防/实现 爬虫的批量下载! 预防方法: 1. 使用随机数字符串,拼接URL! https://camo.githubuserconte ...

  9. js console API All In One

    js console API All In One const log = console.log; for(const key in console) { log(`navigator.${key} ...

  10. 一个最简单 node.js 命令行工具

    一个最简单 node.js 命令行工具 node.js cli $ node cli.js xyz # OR $ node cli xyz 接受参数 process.argv js "use ...