【笔记】网络原理4 -应用层及其相关协议

1. 常见的协议

  • HTTP/HTTPS
  • FTP,文件传输
  • DHCP,动态主机配置
  • DNS,域名系统

2. DNS,Domain Name System

  • 域名的出现是因为IP不好记,而且不能表达组织/公司的名字和性质。
  • 市面上的网页虽然是域名访问,但是实际还是要靠IP,毕竟服务器过路由器只能通过IP。
  • 域名申请注册的一个链接
  • DNS的作用是把域名换算成IP,传输层可以是基于UDP或者是TCP,服务器占用端口53。
  • DNS常用指令
    • ipconfiig/displaydns 展示dns
    • ipconfig/flushdns 清空dns缓存记录
    • ping 域名
    • nslookup 域名
  • DNS访问逻辑
    • 首先客户端访问最近的一台DNS服务器
    • 所有的DNS服务器都记录了DNS根域名服务器的IP地址
    • 上级的DNS服务器记录下一级DNS服务器的IP地址
    • 全球一共13台IPv4的DNS根域名服务器,25台IPv6的根域名服务器
    • 下图中的设置就可获取离客户端最近的DNS服务器

3. DHCP

  • 相比于自己设置的静态IP地址,动态IP地址则由DHCP配置,DHCP可以从服务器中自动获取IP地址。
  • DHCP基于UDP协议,客户端是68端口,服务器是67端口。
  • DHCP服务器会从IP池中挑选一个IP地址出租给客户端一段时间,时间到期就回收。
  • 很多时候,路由器就可以充当DHCP的服务器。
  • DHCP的工作流:
    • DISCOVER:发现服务器:发广播包(源IP是0.0.0.0,目标IP是255.255.255.255,目标MAC是FFFF.FFFF.FFFF)
    • OFFER:提供租约:服务器返回可以租用的IP地址,以及租用期限,子网掩码,网关,DNS信息等;可能会有多个服务器同时回应,因为是广播包
    • REQUEST:选择IP地址:客户端选择一个OFFER,发送广播包回应
    • ACKNOWLEDGE:确认:被选中的服务器发送ACK数据包给客户端
    • 分配完毕,流程图如下:
  • DHCP可以跨网段分配,但是需要DHCP中继代理实现。
  • DHCP常用指令
    • ipconfig /all 看到DHCP的详细信息
    • ipconfig /release 手动释放租约
    • ipconfig /renew 重新申请IP,申请租约

4.HTTP,超文本传输协议

  • 80是HTTP常用的端口,8080是HTTP测试常用的备用端口

  • 如下图,测试了一个http的get请求

    • wireshark抓到了get的url
    • 在wireshark中,选择想看的报文,右键,追踪流,HTTP流,可以看到一些清晰的数据流。橙色是客户端请求的流,蓝色是服务器返回的流。
    • 在一个get指令中,客户端发给服务器的数据有下面这些
    • 服务器返回的数据,此时返回的状态是304
    • 当服务器返回的状态是200时,返回的报文回包括html文件本身
  • 如下截图,HTTP在发送请求时的格式可以参考下图(请求方法可以变,不一定非得get),包括爬虫的时候也就按照这个格式来模仿。记得报文里面每一行都有回车换行符16#20,空格符也不要忘记。

    • HTTP报文格式,注意空格位置和回车换行符位置,都需要用ascii表达出来
    • 在wireshark里面也把这种对应关系表现出来了
    • GET请求不同于post请求,没有请求体,也有长度限制。就算发账户和密码也是以Url的形式明文格式展示:
  • 请求头字段格式

  • 响应头字段格式


  • 状态码

    • 状态码的分类
  • 针对上文出现过HTTP返回的状态码为304:此表示虽然客户端的Get请求已经被允许,但是文档的内容自从上次访问后一直没有变化。


【笔记】网络原理4 -应用层及其相关协议
http://example.com/2024/07/21/[笔记]网络原理4 -应用层及其相关协议/
作者
xiao cuncun
发布于
2024年7月21日
许可协议