基于wireshark了解HTTP和TCP协议和一些网络基本知识

先罗列一些基本概念:

[socket]:

网络上2个程序间通过一个双工(双向)的通信实现实时数据的交换,这个连接的一段称为socket(套接字),其本质是对TCP/IP的封装。

[网络7层协议]

  • 应用层(HTTP,FTP等)
  • 表示层(数据加密)
  • 会话层(数据)
  • 传输层(TCP,UDP)
  • 网络层(IP)
  • 链路层(应用于介质传输的协议)
  • 物理层(用于讨论物理介质的,比如电流,光调制等)

[URI,URL,URN]

  • URI(uniform resource identifier)
    统一资源标识符,有3部分组成
    • 访问资源的命名机制
    • 存放资源的主机名
    • 资源自身的名称
  • URL(uniform resource locator)
    统一资源定位符
    • 访问协议
    • 存放资源的主机IP地址
    • 存放资源的具体地址(如目录或文件名)
  • URN(uniform resource name)
    统一资源命名
    它可以唯一标识网络中的一个实体,而位置可以发生变化,它可以引用多个URL。比如P2P下载中的磁力链接就是URN的一种实现。

[报文]

报文(message)是网络中交换与传输的数据单元,即站点需要一次性发送的数据块。

[TCP]

是一种面向连接的、可靠的、基于字节流的传输层通信协议。

TCP的几个名词

  • SYN(Synchronize Sequence Numbers)同步序列编号,用于发起连接。
  • ACK (Acknowledgement)确认字符。
  • SEQ ( Sequence ) 序号。
  • PSH (Push)推送,让服务端直接拿走数据,这个数据一般较多,不经过缓冲区。
  • RST(Rest)重置连接。
  • FIN (FINISH)请求关闭连接。
  • MSS(Management Support System)表示传输时每个报文能承载的最大数据长度。

TCP建立连接的3次握手

  1. 客户端发送SYN报文带上seq(随机产生)。
  2. 服务端发送SYN和ACK报文带上seq,为上次报文的seq+1。
  3. 客户端发送ACK报文

TCP断开连接的4次握手

  1. 客户端发送FIN报文带上seq(随机产生)。
  2. 服务端继续完成未发送完的数据包,发送SYN和ACK报文带上seq,为上次报文的seq+1。
  3. 服务端完成所有的数据包的发,最后发送FIN报文,告诉客户端可以关闭连接。
  4. 客户端发送ACK报文,关闭连接。

[http]

简介

  • 【定义】超文本传输协议(Hyper Text Transfer Protocol),用于从WWW(world wide web)传输超文本到本地。
  • 基于TCP
  • 属于应用层面向对象的协议

特点

  • 简单快速,只需要传请求方法和路径。
  • 灵活。可以传输的任意类型的数据,通过Content-Type标记即可。
  • 无状态
  • 支持B/S,C/S模式

请求报文组成

由4部分组成

  • 请求行(请求方法,URL,协议)
  • 请求头
  • 空行
  • 请求数据

响应报文组成

由4部分组成

  • 状态行(协议版本号,状态码,状态消息)
  • 响应头
  • 空行
  • 响应正文

工作原理

  1. http客户端通过TCP向服务端发送一个请求。
  2. 服务端做出响应。
  3. 关闭TCP连接。
  4. 解析响应内容。

[下面基于wireshark(网络抓包工具)观察下TCP的几次握手]

直接上图


image

对于wireshark还处于初步学习阶段,有建议和补充的欢迎留言~

【完】

参考文献

https://www.cnblogs.com/ranyonsue/p/5984001.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容