2020级计网授课

计网

Posted by mr_king on July 20, 2020

[TOC]

http包分析

http://host:port:abs_path:parameters?query

http://web1.sksec.club:8001/

http表示要通过HTTP协议来定位网络资源。不止有http协议,还有file协议

ftp协议,gopher协议,https协议等等

host表示合法的因特网主机域名或者IP地址。

port用于表示在传输层上交换信息的进程端口号,http协议默认端口号为80,当然采用不同的协议默认端口号不同。

abs_path:指定请求资源的URI(统一资源定位符)。

parameters参数用于指定特殊参数的可选项。

?query

利用burpsuit抓包

我们以平台上的第一个get传参的题为例

首先推荐大家下载SwitchyOmega插件,这个插件可以随时切换代理,在burpsuit抓包时,非常方便

Bm4hTA.md.png

post传参 BmoEJ1.md.png

请求方式为get

Accept

请求报文可通过一个“Accept”报文头属性告诉服务端 客户端接受什么类型的响应。

Cookie

客户端Cookie通过这个报文头属性传给服务端

Referer

表示这个请求是从哪个URL过来的

Cache-Control

对缓存进行控制,如一个请求希望响应返回的内容在客户端要被缓存一年,或不希望被缓存就可以通过这个报文头达到目的。 Cache-Control:private 默认为private  响应只能够作为私有的缓存,不能再用户间共享 Cache-Control:public 响应会被缓存,并且在多用户间共享。正常情况, 如果要求HTTP认证,响应会自动设置为 private. Cache-Control:must-revalidate  响应在特定条件下会被重用,以满足接下来的请求,但是它必须到服务器端去验证它是不是仍然是最新的。 Cache-Control:no-cache  响应不会被缓存,而是实时向服务器端请求资源。

Cache-Control:max-age=10 设置缓存最大的有效时间,但是这个参数定义的是时间大小(比如:60)而不是确定的时间点。单位是[秒 seconds]。 Cache-Control:no-store 在任何条件下,响应都不会被缓存,并且不会被写入到客户端的磁盘里,这也是基于安全考虑的某些敏感的响应才会使用这个。

** Accept-Language** Accept-Language:zh-CN,zh;q=0.9 浏览器申明自己接收的语言

Connection Connection: keep-alive 当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。 Connection: close 代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭, 当客户端再次发送Request,需要重新建立TCP连接。

User-Agent 告诉HTTP服务器, 客户端使用的操作系统和浏览器的名称和版本

Content-Type Content-Type:text/html;charset=UTF-8 告诉客户端,资源文件的类型,还有字符编码,客户端通过utf-8对资源进行解码,然后对资源进行html解析。通常我们会看到有些网站是乱码的,往往就是服务器端没有返回正确的编码。

Content-Encoding gzip 告诉客户端,服务端发送的资源是采用gzip编码的,客户端看到这个信息后,应该采用gzip对资源进行解码。 Content-Length HTTP消息长度, 用十进制数字表示的八位字节的数目

TCP建立连接过程

Bn0MKP.md.png

Bn0G5Q.md.png

1:A向B发起连接请求,以一个随机数初始化A的seq,这里假设为10000,此时ACK=0 2:B收到A的连接请求后,也以一个随机数初始化B的seq,这里假设为20000,意思是:你的请求我已收到,我这方的数据流就从这个数开始。B的ACK是A的seq加1,即10000+1=10001 3:A收到B的回复后,它的seq是它的上个请求的seq加1,即10000+1=10001,意思也是:你的回复我收到了,我这方的数据流就从这个数开始。A此时的ACK是B的seq加1,即20000+1=20001

Packet Tracer 搭建一个小型局域网

BnL9DP.md.png