铭万做的网站,wordpress支持php,南宁学网站开发,娄底网站建设目录 协议头
ip头
udp头
mac层
网络工具 telnet wireshark
Http
一、HTTP 协议介绍
二、HTTP 协议的工作过程
三、使用抓包工具抓取报文
四、获取到http请求报文#xff1a;
五、http请求#xff08;request#xff09;
#xff08;一#xff09;、认识URL
项…目录 协议头
ip头
udp头
mac层
网络工具 telnet wireshark
Http
一、HTTP 协议介绍
二、HTTP 协议的工作过程
三、使用抓包工具抓取报文
四、获取到http请求报文
五、http请求request
一、认识URL
项目天气预报 协议头
ip头
(1)版本 占4位指IP协议的版本。通信双方使用的IP协议版本必须一致。目前广泛使用的IP协议版本号为4即IPv4。关于IPv6目前还处于草案阶段。
(2)首部长度 占4位可表示的最大十进制数值是15。请注意这个字段所表示数的单位是32位字长1个32位字长是4字节因此当IP的首部长度为1111时即十进制的15首部长度就达到60字节。当IP分组的首部长度不是4字节的整数倍时必须利用最后的填充字段加以填充。因此数据部分永远在4字节的整数倍开始这样在实现IP协议时较为方便。首部长度限制为60字节的缺点是有时可能不够用。但这样做是希望用户尽量减少开销。最常用的首部长度就是20字节即首部长度为0101这时不使用任何选项。
(3)区分服务 占8位用来获得更好的服务。这个字段在旧标准中叫做服务类型但实际上一直没有被使用过。1998年IETF把这个字段改名为区分服务DS(Differentiated Services)。只有在使用区分服务时这个字段才起作用。
(4)总长度 总长度指首部和数据之和的长度单位为字节。总长度字段为16位因此数据报的最大长度为216-165535字节。
在IP层下面的每一种数据链路层都有自己的帧格式其中包括帧格式中的数据字段的最大长度这称为最大传送单元MTU(Maximum Transfer Unit)。当一个数据报封装成链路层的帧时此数据报的总长度即首部加上数据部分一定不能超过下面的数据链路层的MTU值。
(5)标识(identification) 占16位。IP软件在存储器中维持一个计数器每产生一个数据报计数器就加1并将此值赋给标识字段。但这个“标识”并不是序号因为IP是无连接服务数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分片时这个标识字段的值就被复制到所有的数据报的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。
(6)标志(flag) 占3位但目前只有2位有意义。
● 标志字段中的最低位记为MF(More Fragment)。MF1即表示后面“还有分片”的数据报。MF0表示这已是若干数据报片中的最后一个
● 标志字段中间的一位记为DF(Don’t Fragment)意思是“不能分片”。只有当DF0时才允许分片。
(7)片偏移 占13位。片偏移指出较长的分组在分片后某片在原分组中的相对位置。也就是说相对用户数据字段的起点该片从何处开始。片偏移以8个字节为偏移单位。这就是说每个分片的长度一定是8字节64位的整数倍。
(8)生存时间 占8位生存时间字段常用的的英文缩写是TTL(Time To Live)表明是数据报在网络中的寿命。由发出数据报的源点设置这个字段。其目的是防止无法交付的数据报无限制地在因特网中兜圈子因而白白消耗网络资源。最初的设计是以秒作为TTL的单位。每经过一个路由器时就把TTL减去数据报在路由器消耗掉的一段时间。若数据报在路由器消耗的时间小于1秒就把TTL值减1。当TTL值为0时就丢弃这个数据报。
(9)协议 占8位协议字段指出此数据报携带的数据是使用何种协议以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。
(10)首部检验和 占16位。这个字段只检验数据报的首部但不包括数据部分。这是因为数据报每经过一个路由器路由器都要重新计算一下首部检验和一些字段如生存时间、标志、片偏移等都可能发生变化。不检验数据部分可减少计算的工作量。
(11)源IP地址 占32位。
(12)目的IP地址 占32位。 udp头 用户数据报UDP有两个字段:数据字段和首部字段。首部字段很简单只有8个字节(图 5-5)由四个字段组成每个字段的长度都是两个字节。各字段意义如下:
(1)源端口 源端口号。在需要对方回信时选用。不需要时可用全0。用于标识发送方的端口。
(2)目的端口 目的端口号。这在终点交付报文时必须要使用到。用于标识接收方的端口。
(3)长度 UDP用户数据报的长度其最小值是8(仅有首部)。表示UDP头部和数据的总长度。
(4)校验和 检测 UDP用户数据报在传输中是否有错。有错就丢弃。用于检验UDP头部和数据在传输过程中是否发生了错误。虽然是可选的但推荐使用以增加数据传输的可靠性。 mac层
VLAN 标记字段的长度是4字节插入在以太网MAC 帧的源地址字段和类型字段之间。VLAN 标记的前两个字节总是设置为0x8100(即二进制的1000000100000000)称为IEEE 802.1Q 标记类型。当数据链路层检测到 MAC 帧的源地址字段后面的两个字节的值是0x8100时就知道现在插入了4字节的VLAN标记。于是就接着检查后面两个字节的内容。在后面的两个字节中前3位是用户优先级字段接着的一位是规范格式指示符CFI(Canonical Format Indicator)最后的12位是该虚拟局域网VLAN标识符 VID(VLANID)它唯一地标志了这个以太网帧是属于哪一个 VLAN。由于用于 VLAN 的以太网帧的首部增加了4个字节因此以太网的最大长度从原来的1518字节(1500字节的数据加上18字节的首部)变为1522字节。 网络工具 telnet wireshark
常用网络测试工具
telnet netstat ping arp wireshark tcpdump
sudo ufw disable
sudo apt-get install openssh-server openssh-client
sudo apt-get install wireshark
1、telnet 远程登录工具默认都是系统安装。
sudo ufw disable//关闭防火墙
sudo ufw status//查看防火墙状态
sudo apt-get install openssh-server openssh-client//下载远程登陆工具ssh客户端和服务端一起下载
使用格式 telnet ip地址 端口
eg: telnet 192.168.1.1 8888
注意如果没有写端口则默认登录23 号端口。 2、netstat 测试查看网络端口使用情况
netstat -anp
netstat -n 列出当前所有网络端口使用情况
netstat -n -t 列出所有TCP通信的端口信息
netstat -n -u 列出所有UDP通信的端口信息 netstat -n -i 列出默认接口上的通信信息
netstat -lnp |grep 8888 查看指定端口上的通信详情 3、ping 命令 测试网路的联通状况
ping ip地址
ping 域名 4、arp 地址解析命令
arp -an 列出当前主机的地址ARP表
arp -d ip地址 5、wireshark 抓包工具 tcp.port 50000 tcp.ip 192.168.0.183
sudo apt-get install wireshark//下载wireshark网络抓包工具。启动的时候在命令行使用sudo wireshark运行不然权限不足影响后续的网络抓包
step1 step2 换网关 step3 复制内容右键-copy-as printable Text
过滤规则
1、根据ip地址过滤ip.src x.x.x.x
ip.dst x.x.x.x
2、根据端口过滤tcp.srcport xx;
tcp.dstport xx;
udp.srcport xx;
udp.dstport xx;
3、根据协议类型过滤
tcp udp icmp .....
4、任意组合以上条件抓包
如果与的关系 and
ip.src 192.168.1.100 and tcp.dstport 9999
如果或关系 or
ip.src 192.168.1.100 or ip.dst 192.168.1.102
tcp host 192.168.1.100
Http
一、HTTP 协议介绍
基本介绍
HTTPHyper Text Transfer Protocol 全称超文本传输协议是用于从万维网WWW:World Wide Web 服务器传输超文本到本地浏览器的传送协议。
HTTP 是一种应用层协议是基于 TCP/IP 通信协议来传递数据的其中 HTTP1.0、HTTP1.1、HTTP2.0 均为 TCP 实现HTTP3.0 基于 UDP 实现。现主流使用 HTTP1.0 和 HTTP3.0
协议 为了使数据在网络上从源头到达目的网络通信的参与方必须遵循相同的规则这套规则称为协议它最终体现为在网络上传输的数据包的格式。
通俗点讲协议就是要保证网络通信的双方能够互相对接上号。就像是两个人传递纸条通过互相指定的暗号如果发送天亮了表示可以打游戏了等等
注意 当我们访问一些网页时是显示通过 HTTPS 来进行通信的并且当下大多数的网页都是通过 HTTPS 来进行通信的因为 HTTPS 在 HTTP 的基础上做了一个加密的工作。HTTPS 将在本文末尾具体介绍 二、HTTP 协议的工作过程
当我们在浏览器输入一个网址此时浏览器就会给对应的服务器发送一个 HTTP 请求对应的服务器收到这个请求之后经过计算处理就会返回一个 HTTP 响应。并且当我们访问一个网站时可能涉及不止一次的 HTTP 请求和响应的交互过程。 基础术语
客户端 主动发起网络请求的一端
服务器 被动接收网络请求的一端
请求 客户端给服务器发送的数据
响应 服务器给客户端返回的数据
HTTP 协议的重要特点 一发一收一问一答
注意 网络编程中除了一发一收之外还有其它的模式
多发一收例如上传大文件
一发多收例如看直播时搜索一个词条可以得到多个视频源
多发多收例如串流steam link、moonlight 等等
三、使用抓包工具抓取报文
wireshark或者浏览器自带的f12
四、获取到http请求报文
GET /?appweather.todaycityNm%E6%88%90%E9%83%BDappkey73908sign0b3399b07636fe2db150dbcb93a221cfformatjson HTTP/1.1
Accept: text/html,application/xhtmlxml,application/xml;q0.9,image/avif,image/webp,image/apng,*/*;q0.8,application/signed-exchange;vb3;q0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q0.9,en;q0.8,en-GB;q0.7,en-US;q0.6
Cache-Control: max-age0
Connection: keep-alive
Host: api.k780.com
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 Edg/128.0.0.0会得到http响应报文及响应文档有时会一起发过来有时会分段发送过来
五、http请求request
一、认识URL
URL统一资源定位符Uniform Resource Locator是用来在Web上标识和定位资源的地址。HTTP请求中的URL包含了有关资源的详细信息使得客户端能够准确地访问所需的资源。URL由多个部分组成每部分都有其特定的功能和含义。下面是对URL各个组成部分的详细介绍
URL的组成部分 协议Scheme 定义: 指定用于访问资源的协议或方式。 格式: scheme:// 示例: http://、https://、ftp://等。 作用: 指定如何获取资源。HTTP和HTTPS是最常见的协议用于Web资源的访问。 主机Host 定义: 资源所在的服务器的域名或IP地址。 格式: host 示例: www.example.com、192.168.1.1。 作用: 确定要访问的服务器的地址。 端口Port 定义: 服务器上用于接收请求的端口号可选。 格式: :port 示例: :80HTTP的默认端口:443HTTPS的默认端口。 作用: 指定服务器上的具体端口以便客户端可以正确地连接到服务。通常情况下端口号在默认值时可以省略。 路径Path 定义: 服务器上资源的具体位置。 格式: /path/to/resource 示例: /index.html、/images/pic.jpg。 作用: 确定资源在服务器上的位置。路径通常反映了服务器上的文件结构。 查询字符串Query String 定义: 附加到URL末尾的键值对用于传递额外的参数。 格式: ?key1value1key2value2 示例: ?searchchatGPTpage1。 作用: 用于传递数据给服务器例如表单提交数据或动态请求参数。查询字符串由键值对组成键和值通过等号连接不同的键值对通过分隔。 片段标识符Fragment Identifier eg https://www.example.com:8080/path/to/resource?query1value1query2value2#section 定义: 用于标识文档中的特定部分。 格式: #fragment 示例: #section1、#top。 作用: 通常用于页面内的导航告诉浏览器滚动到特定的位置或内容。片段标识符不会发送到服务器它只对客户端有效。 协议: https 主机: www.example.com 端口: 8080 路径: /path/to/resource 查询字符串: query1value1query2value2 片段标识符: #section 项目天气预报
在接收服务器发送的数据的时候可能会出现网络波动导致服务器多次发送keep-alive 长链接不立刻断开大部分服务器是两分钟断开而我们大部分写出的程序都是只有一个recv
所以针对这种情况有四种解决方案
1延时接收sleep(3);
2循环recv拼接判断0\r\n结束标志弹出循环
3请求报文为keep-alive长连接改为close短链接服务器就会先断开
4timeout超时处理