首页 > 其他分享 >网络七层协议和TCP

网络七层协议和TCP

时间:2023-12-14 14:44:30浏览次数:33  
标签:UDP http 请求 七层 网络 TCP 数据包 抓包

搭建环境

使用nc工具搭建一个TCP服务器。

  • 服务端使用命令创建监听端口nc -l -p 1023
  • 客户端使用命令连接nc <目标ip> -p 1023
    以上使用tcpdump或者wireshark进行抓包
    搭建环境如下
    ![[Pasted image 20231214135926.png]]

使用wireshark抓包如下
![[Pasted image 20231214092055.png]]

TCP

抓包

在tcp使用wireshark抓包的时候,wireshark会帮你将数据包解析成人能看懂的形式。tcpdump也是类似相同,抓取到数据包之后,会解析成人能看懂的数据。

尽可能不要使用抓取TCP或者UDP的包方式来排查问题,优先从http请求,和路由的信息来进行排查

4 3.515901086 127.0.0.1 127.0.0.1 TCP 70 35184 → 1024 [PSH, ACK] Seq=1 Ack=1 Win=33280 Len=4 TSval=3430981847 TSecr=3430978331
数据包传输的数据如下 传递了字符串aaa

..............E.
.8.U@.@.[h......
...p..kM.:J5.I..
...,............
..aaa.

网络七层协议的表现

  • 物理层:因为是属于物理上的传输数据,和网线的介质相关,无法通过抓包表现
  • 数据链路层:用作寻找mac地址
  • 网络层:用作表示ip的起始地址和目标地址。可以用作排查数据发向什么位置
  • 传输层:用作表明这个数据包是什么协议,以及指定的端口。以及数据包的标识,在tcp上有标识但是在udp上并不会显示标识。并且会显示Win滑动窗口,用作标识这个TCP数据包有多大,Len表示还可以读取多少字节。以及TSval和TSecr是时间戳,用作标识这个数据包的发送的往返时间。
  • 会话层:以TCP和UDP为主,在发送数据包之前会建立Socket连接,而会话层就是在这上面工作,用作长时间保留会话的对于会话的细节处理可以详细的了解一下请求的数据包格式
  • 表示层:用作处理数据的加密和解密的以及压缩等
  • 应用层:用于给应用层提供网络协议服务,

对于上面的七层协议,由于互联网并不是完全遵守七层协议而是更符合TCP/IP协议,所以参考意义不大

UDP

构建udp请求环境

抓到的请求

1 0.000000000 127.0.0.1 127.0.0.1 UDP 47 51750 → 1025 Len=5
UDP的数据包并不会有TCP的请求验证,所以单个数据包就直接携带了对应的数据。

UDP并不常用,通常是使用在游戏联机的协议,和一些视频流。用于节省带宽。

HTTP

http协议是基于TCP的,面向可靠的连接。通常,使用抓取http包软件使用的是,fidder或者mitmproxy,reqable等。总的思路都差不多,不同的工具对于抓取的数据包预览不同。mitmproxy支持支持编写python脚本对请求进行批量转化成curl以及对数据包的重写重放。
不推荐使用wireshark和tcpdump进行抓取http的数据包,一是因为数据包难看懂,可能多个TCP包才能构成一个完整的http请求包,二是,对于http请求的操作,比如重写,重放,解析请求参数,以及对请求的导出。这些操作,更专用的请求抓包工具是为更好用的。

在抓取https包的时候,需要先安装对应抓包工具的证书,不然无法识别https数据包。

在搜索引擎输入内容进行进行提前预览的时候,会得到下面的部分内容。

http请求

每一个http请求(request)都会有一个回复(response)。不同的请求类型,其参数也不尽相同。

curl -H 'user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:121.0) Gecko/20100101 Firefox/121.0' -H 'accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8' -H 'accept-language: en-US,en;q=0.5' --compressed -H 'referer: https://www.cnblogs.com/leesinx/' -H 'cookie: .AspNetCore.Antiforgery.b8-pDmTq1XM=CfDJ8DZoAyJmInJHoSwqM1IbzdRkQ3ChfTuoaCD4CHqpEwoRUe7nC7-r9YKJbYVAavjS21nxDwMEqFaalmQ2ijmxBC39eSFDL_FzhgboUVsAn2FSRnAuide7VPw77qKcDbcHH7VZgnO13_8n_By82ta5HGQ' -H 'cookie: Hm_lvt_866c9be12d4a814454792b1fd0fed295=1702522724' -H 'cookie: Hm_lpvt_866c9be12d4a814454792b1fd0fed295=1702522740' -H 'cookie: _ga_M95P3TTWJZ=GS1.1.1702522724.1.1.1702522740.0.0.0' -H 'cookie: _ga=GA1.1.1109548462.1702522724' -H 'upgrade-insecure-requests: 1' -H 'sec-fetch-dest: document' -H 'sec-fetch-mode: navigate' -H 'sec-fetch-site: same-origin' -H 'sec-fetch-user: ?1' -H 'te: trailers' https://www.cnblogs.com/
内容 例子 解释
url http://baidu.com 唯一标识符,也是一个路由信息,当请求发送到内网之后可能会被其他的反向代理服务器进行处理。并且url中也可能包含参数信息
header accept: application/json, text/javascript, */*; q=0.01 请求头部信息,该信息。
body {"appId":"blog-web","browser":"Firefox"} 请求体,GET请求不能携带body但是可以携带查询字符串

POST请求

主要作用是向服务器请求修改信息,可以提供Body体内容。用作传递Json参数以及其他的信息。

GET请求

主要向服务器索取信息,其Body体不能提供content。但是可以提供查询字符串,在url中。通常会使用查询字符串在GET请求上。

标签:UDP,http,请求,七层,网络,TCP,数据包,抓包
From: https://www.cnblogs.com/index72/p/17901133.html

相关文章

  • 三、网络层协议及IP编码
    一、网络层协议1.网络层协议:网络层经常被称为IP层。但网络层协议并不只是IP协议,还包括ICMP(InternetControlMessageProtocol)协议、IPX(InternetPacketExchange)协议等。 2.IP协议IP是InternetProtocol的缩写。InternetProtocol本身是一个协议文件的名称,该协议文件的内......
  • 【Python】人工智能-机器学习——不调库手撕深度网络分类问题
    1.作业内容描述1.1背景数据集大小150该数据有4个属性,分别如下Sepal.Length:花萼长度(cm)Sepal.Width:花萼宽度单位(cm)Petal.Length:花瓣长度(cm)Petal.Width:花瓣宽度(cm)category:类别(IrisSetosa\IrisVersicolour\IrisVirginica)1.2要求在不调用机器学习库的情......
  • TCP协议 和 UDP协议 的区别 (三次握手/四次挥手)
    TCP协议拓展:FTP:(File Transfer Protocol)文件传输协议FIle协议:访问本地文件Webscoket:网络通信协议;主动给客户端发送协议FTP:文件传输协议①重点:面试重点:TCP、UDP协议区别UDP(UserDatagramProtocol)......
  • 如何在 Eolink Apikit 中发起 TCP/UDP 文档测试
    TCP/UDP是两种常用的网络传输协议。TCP协议提供可靠的连接,而UDP协议提供不可靠的连接。TCP协议是面向连接的协议,在建立连接之前,客户端和服务器需要先握手。握手完成后,客户端和服务器之间就会建立一个可靠的连接。在连接建立之后,客户端和服务器可以通过该连接进行数据传输。T......
  • 一、网络通信基本概念
    一、网络通信的基本概念通信:是指人与人、人与物、物与物之间通过某种媒介和行为进行的信息传递与交流。网络通信,是指终端设备之间通过计算机网络进行的通信。•数据载荷:可以理解为最终想要传递的信息,但实际上,在具有层次化结构的通信过程中,上一层协议传递给下一层协议的数......
  • 解决Ubuntu系统在Vmware中重启后丢失网络图标和服务的问题
    问题如上。解决方法:先关掉NetworkManager:sudoserviceNetworkManagerstop用gedit打开NetworkManager.statesudogedit/var/lib/NetworkManager/NetworkManager.state改成如下:重启NetworkManager:sudoserviceNetworkManagerrestart完成注意:不同版本的U......
  • 深度学习3D网络---PointNet++
    PointNet++地址:http://stanford.edu/~rqi/pointnet2/1.两者主要不同点考虑到PointNet特征提取时只考虑单点,不能很好的表示局部结构==>PointNet++引入了sampling&grouping,考虑局部领域特征PointNet中globalfeature直接由maxpool得到,容易造成信息丢失==>PointNet++采......
  • TCP简单的服务端代码(C语言)
    1#include<stdio.h>2#include<strings.h>//bzero3#include<unistd.h>//close4#include<sys/socket.h>//socket5#include<netinet/in.h>//structsockaddr_in6#include<arpa/inet.h>//inet_addr7i......
  • [VMware]ESXI 7.0u3使用端口汇聚提升VMs网络吞吐率
    前言ESXI需要搭配千兆/万兆交换机才能实现高速通讯的效果。ESXI网络组成关键指标图示11.端口组portgroup释义:一组端口的组合2.虚拟交换机virtualswitchs释义:虚拟的2层、3层交换机,基于软件3.物理网卡physicalcards释义:物理网卡1G/10G以太网卡或者光端口网卡4.虚拟管理卡 VMke......
  • GO TCP代理(可代理SQLSERVER\MYSQL\ORCALE)
    用nginx代理不知道为什么内网能用,外网用不了,改用go写个代理临时用下,直接上代码 packagemainimport( "fmt" "io" "log" "net")varaddrstring="0.0.0.0:51415"//代理服务端口vardest_addrstring="192.168.2.120:1433"//目标地址......