计算机网络实验二

数据链路层:

实作一:

 

目的mac地址:34:4b:50:00:00:00

源mac地址:d4:72:26:aa:23:a4

Type表示类型:IPv4(0x0800)

有些网卡driver会把帧后面的4字节的FCS去掉, 不上传给tcp/ip协议栈,所以Wireshark 展现给我们的帧中没有校验字段

实作二:

ping我旁边的计算机结果:

发出:

 

接收:

发出帧的目的mac和接收帧的源mac相同,都为:12:7c:95:b1:31:ad,是我ping的电脑的mac地址

Ping qige.io结果:

发出:

接收:

发出帧的目的mac和接收帧的源mac相同,都为:d4:72:26:aa:23:a4,是一个网关地址,是我的计算机所处子网下的网关mac地址

ping www.cqjtu.edu.cn结果:

发出:

接收:

发出帧的目的 MAC 地址以及返回帧的源 MAC 地址为:d4:72:26:aa:23:a4,是一个网关地址,是我的计算机所处子网下的网关地址

实作三:

Ping 旁边电脑:

 

请求:

Arp请求的目的mac为全一即广播,源mac为我的mac地址

内容为:who has 192.168.0.1? tell 192.168.0.178

回应:

回应的源mac为网关的mac地址,目的mac为本机mac地址

Ping qige.io

请求:

 

目的mac全一,为广播

回应:

 

目的mac为本机,源mac为网关的mac地址

网络层:

实作一:

 

版本:4              头部长度:20bytes

总长度:155          TTL:4

协议类型:UDP

实作二:

 

这两个ip包是同一个包分开的,这两个ip包的Identifiaction相同,都为0xe300,说明它们是同一个大包分开的,两个包的DF段都为0,说明包可分割,第一个包的MF为1,表示这是分割后的包,并且不是分割后小包中的最后一个,第二个包为0,表示这个包是原来包的最后一个。第一个包的大小为1500,偏移量为0,第二个包的大小为548,偏移量为1480

实作三:

 

每个发送的包的TTL从一开始连续增加,向目的主机发送一个 ICMP 回显请求报文,初始时 TTL 等于 1 ,这样当该数据报抵达途中的第一个路由器时,TTL 的值就被减为 0,导致发送超时错误,因此该路由生成一份 ICMP 超时差错报文返回给源主机。随后,主机将数据报的 TTL 值递增 1 ,以便 IP 报能传送到下一个路由器,并由下一个路由器生成 ICMP 超时差错报文返回给源主机。不断重复这个过程,直到数据报达到目的主机或超过跳数限制,到达目的主机后,目的主机返回 ICMP 回显应答报文。这样,源主机只需要对返回的每一份 ICMP 报文进行解析处理,就可以掌握数据报从源主机到达目的主机途中所经过的路由信息。如果我收到一个包,其 TTL 的值为 50,那么可以推断这个包从源点到我之间有14跳。

传输层:

实作一:

TCP:

 

源端口为:80             目的端口为:64852

顺序号:1                 确认号:1

UDP:

 

源端口:56453         目的端口:8000      长度:314

源端口是发出主机上发出这个段的应用程序的端口号,而目的端口则是接收主机接收该段的进程的端口号,目的端口和源端口的设定是为了能够找到主机上哪一个进程。

实作二:

wireshark捕获的和qige.io建立连接以及释放连接的包

 第一次握手:

 

 因为syn=1并且ack=0

第二次握手:

因为syn=1并且ack=1

第三次握手:

因为只有ack为1

 问题一:

因为我们的浏览器在访问一个网站时(例如这里的qige.io)为了使得传输数据速度更快,会使用多个端口与服务器建立连接

问题二:

第四次挥手和第三次合并在了一起

应用层:

实作一:

 

DNS应答字段含义:

  1. QR:查询/应答标志。0表示这是一个查询报文,1表示这是一个应答报文
  2. opcode,定义查询和应答的类型。0表示标准查询,1表示反向查询(由IP地址获得主机域名),2表示请求服务器状态
  3. AA,授权应答标志,仅由应答报文使用。1表示域名服务器是授权服务器
  4. TC,截断标志,仅当DNS报文使用UDP服务时使用。因为UDP数据报有长度限制,所以过长的DNS报文将被截断。1表示DNS报文超过512字节,并被截断
  5. RD,递归查询标志。1表示执行递归查询,即如果目标DNS服务器无法解析某个主机名,则它将向其他DNS服务器继续查询,如此递归,直到获得结果并把该结果返回给客户端。0表示执行迭代查询,即如果目标DNS服务器无法解析某个主机名,则它将自己知道的其他DNS服务器的IP地址返回给客户端,以供客户端参考
  6. RA,允许递归标志。仅由应答报文使用,1表示DNS服务器支持递归查询
  7. zero,这3位未用,必须设置为0
  8. rcode,4位返回码,表示应答的状态。常用值有0(无错误)和3(域名不存在)

 实作二:

 通过连接,客户端写一个ASCII文本请求行,后跟0或多个HTTP头标,一个空行和实现请求的任意数据。
一个请求由四个部分组成:请求行、请求头标、空行和请求数据
1.请求行:请求行由三个标记组成:请求方法、请求URI和HTTP版本,它们用空格分隔。
例如:GET /index.html HTTP/1.1
HTTP规范定义了8种可能的请求方法:
GET            检索URI中标识资源的一个简单请求
HEAD            与GET方法相同,服务器只返回状态行和头标,并不返回请求文档
POST            服务器接受被写入客户端输出流中的数据的请求
PUT            服务器保存请求数据作为指定URI新内容的请求
DELETE            服务器删除URI中命名的资源的请求
OPTIONS        关于服务器支持的请求方法信息的请求
TRACE            Web服务器反馈Http请求和其头标的请求
CONNECT        已文档化但当前未实现的一个方法,预留做隧道处理
2.请求头标:由关键字/值对组成,每行一对,关键字和值用冒号(:)分隔。
请求头标通知服务器有关于客户端的功能和标识,典型的请求头标有:
User-Agent        客户端厂家和版本
Accept            客户端可识别的内容类型列表
Content-Length    附加到请求的数据字节数
3.空行:最后一个请求头标之后是一个空行,发送回车符和退行,通知服务器以下不再有头标。
4.请求数据:使用POST传送数据,最常使用的是Content-Type和Content-Length头标。

 

状态行:状态行由 HTTP 协议版本字段、状态码和状态码的描述文本 3 个部分组成,他们之间使用空格隔开;

  ● 状态码由三位数字组成,第一位数字表示响应的类型,常用的状态码有五大类如下所示:

  1xx:表示服务器已接收了客户端请求,客户端可继续发送请求;

  2xx:表示服务器已成功接收到请求并进行处理;

  3xx:表示服务器要求客户端重定向;

  4xx:表示客户端的请求有非法内容;

  5xx:表示服务器未能正常处理客户端的请求而出现意外错误;

  ● 状态码描述文本有如下取值:

  200 OK:表示客户端请求成功;

  400 Bad Request:表示客户端请求有语法错误,不能被服务器所理解;

  401 Unauthonzed:表示请求未经授权,该状态代码必须与 WWW-Authenticate 报头域一起使用;

  403 Forbidden:表示服务器收到请求,但是拒绝提供服务,通常会在响应正文中给出不提供服务的原因;

  404 Not Found:请求的资源不存在,例如,输入了错误的URL;

  500 Internal Server Error:表示服务器发生不可预期的错误,导致无法完成客户端的请求;

  503 Service Unavailable:表示服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常;

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值