计算机网络2

HTTP和HTTPS的区别

  1. 安全性

    • HTTP(HyperText Transfer Protocol)是明文传输的,数据在传输过程中容易被窃听和篡改。
    • HTTPS(HyperText Transfer Protocol Secure)通过 SSL/TLS 加密保护数据传输的安全性,因此更安全可靠。
  2. 证书和加密

    • HTTPS需要使用 SSL 证书,这些证书由 CA(Certificate Authorities,证书颁发机构)颁发,确保了连接的安全性。因此,HTTPS的部署成本较高。
    • HTTP不需要证书,也不提供加密功能,因此成本较低,但安全性不如HTTPS。
  3. 连接方式

    • HTTP是无状态的,每个请求都是独立的,服务器不会保存之前的状态信息。
    • HTTPS在SSL/TLS协议的加持下,可以建立安全、持久的连接,可以保持用户的身份认证状态,因此更适合安全性要求较高的场景。
  4. 端口

    • HTTP默认端口是80,而HTTPS默认端口是443。这个区别有助于网络设备正确地路由HTTP和HTTPS流量。

HTTP请求报文的内容

  1. 请求行(Request Line):

    • 请求行包括请求方法(GET、POST、PUT、DELETE等)、URL(Uniform Resource Locator,统一资源定位符)和HTTP协议版本。
    • 例如:GET /index.html HTTP/1.1
  2. 请求头部(Request Headers):

    • 请求头部包含了关于客户端请求、所需资源、客户端信息等的额外信息。

    • 常见的请求头部字段包括:

      • Host:请求的主机名

      • User-Agent:客户端信息,如浏览器类型、操作系统等

      • Accept:客户端可接受的内容类型

      • Content-Type:请求正文的类型

      • Content-Length:请求正文的长度

      • Cookie:包含了之前服务器通过 Set-Cookie 设置的Cookie信息等

      • Connection :指定与连接相关的属性,常见取值包括Keep-Alive,表示长连接,以及close,表示短连接。

      • Accept-Charset :通知服务器客户端能够处理的字符集编码格式,例如utf-8ISO-8859-1等。服务器可以据此进行内容的编码转换。

      • Accept-Encoding :通知服务器客户端能够接受的数据压缩格式,例如gzipdeflatebr等。如果服务器支持压缩,可以使用这个字段来节省带宽和提高传输速度。

      • Accept-Language :通知服务器客户端偏好的语言,以便服务器提供适合的语言版本内容。常见取值包括en(英语)、zh(中文)等,也可以包含优先级信息,如en-US(美式英语)和zh-CN(简体中文)。

    • 格式为:HeaderName: Value

  3. 空行

    • 请求头部结束后是一个空行,用于分隔请求头部和请求正文。
  4. 请求正文(Request Body):

    • 对于GET请求等没有请求正文的情况,请求正文为空。
    • 对于POST请求等包含数据的情况,请求正文包含了需要传输给服务器的数据,例如表单数据、JSON数据等。

HTTP响应报文

  1. 状态行(Status Line):

    • 状态行包括协议版本、状态码和状态码描述。
    • 例如:HTTP/1.1 200 OK
  2. 响应头部(Response Headers):

    • 响应头部包含了关于服务器响应的额外信息。

    • 常见的响应头部字段包括:

      • Content-Type:响应正文的类型

      • Content-Length:响应正文的长度

      • Server:服务器信息

      • Date:响应生成的日期时间

      • Set-Cookie:设置Cookie信息

      • Cache-Control:控制缓存行为

      • Content-Charset:指定了响应正文所使用的字符编码格式,例如 UTF-8、ISO-8859-1 等。这个字段告诉客户端如何正确地解析响应正文中的文本数据。

      • Content-Encoding:指定了响应正文所使用的数据压缩格式,例如 gzip、deflate、br 等。如果服务器对响应正文进行了压缩,客户端在接收到响应后会根据这个字段来解压缩数据。

      • Content-Language:指定了响应正文所使用的语言,以便客户端正确地显示内容。例如,对于网站,如果用户的浏览器支持多语言,服务器可以根据这个字段来选择合适的语言版本返回给客户端。

    • 格式为:HeaderName: Value

  3. 空行

    • 响应头部结束后是一个空行,用于分隔响应头部和响应正文。
  4. 响应正文(Response Body):

    • 响应正文包含了服务器传输给客户端的数据,例如HTML文档、JSON数据等。

HTTP状态码

  • 1xx:信息性状态码,指示服务器已经接收到请求并正在处理。通常用于异步处理请求时,告知客户端继续等待或执行其他操作。

  • 2xx:成功状态码,指示请求已经成功被服务器接收、理解、并接受处理。

  • 3xx:重定向状态码,指示客户端需要进行进一步的操作才能完成请求,如重定向到其他URL。

  • 4xx:客户端错误状态码,指示客户端发送的请求有误,服务器无法处理。常见的有 403 Forbidden(禁止访问)和 404 Not Found(未找到资源)。

  • 5xx:服务器错误状态码,指示服务器在处理请求时发生了错误。常见的有 500 Internal Server Error(服务器内部错误)和 503 Service Unavailable(服务不可用)。

下面是详细的解释

  • 200 OK:请求成功。服务器成功处理了请求,并返回了所请求的资源。

  • 301 Moved Permanently:永久重定向。请求的资源已经被永久移动到新的URL。

  • 302 Found (or Temporary Redirect):临时重定向。请求的资源暂时被移动到新的URL。

  • 403 Forbidden:禁止访问。服务器理解请求,但拒绝执行请求。通常由于权限设置或其他安全原因导致。

  • 404 Not Found:未找到资源。用户请求的资源不存在,服务器无法找到对应的资源。

  • 500 Internal Server Error:服务器内部错误。服务器在执行请求时遇到了错误。

  • 502 Bad Gateway:坏的网关。作为网关或代理的服务器尝试执行请求时,从上游服务器接收到了无效的响应。

  • 503 Service Unavailable:服务不可用。服务器暂时过载或停机维护,无法处理请求。

  • 504 Gateway Timeout:网关超时。作为网关或代理的服务器未及时从上游服务器接收到请求。

跨域

跨域是由浏览器的同源策略(Same-Origin Policy)所导致的安全限制。同源策略要求浏览器只能加载与当前网页具有相同协议、域名和端口的资源。如果请求的资源与当前网页的源不同,浏览器就会阻止该跨域请求,以防止恶意网站获取用户的敏感信息或执行恶意操作。

跨域问题在网络开发中经常会遇到,特别是在使用 AJAX、Web Socket 等技术时更为突出。为了解决跨域问题,常见的方法包括使用 CORS(跨域资源共享)、JSONP(JSON with Padding)、代理服务器等。这些方法可以让浏览器在一定条件下允许跨域请求,但需要在服务器端或客户端做相应的配置和处理。

HTTP请求响应中断原因

  1. 网络问题:网络连接不稳定或网络中断可能导致HTTP请求或响应中断。这可能是由于用户的网络连接不稳定、服务器端的网络问题或中间代理的故障引起的。

  2. 超时:如果HTTP请求在一定时间内没有得到响应,通常会发生超时。这可能是由于网络延迟、服务器负载过重或请求被阻塞等原因导致的。

  3. 服务器错误:服务器端可能会出现错误,导致无法完成请求或响应。这可能是由于服务器内部错误、配置问题或资源不足等引起的。

  4. 客户端问题:客户端可能会出现问题,导致HTTP请求或响应中断。例如,浏览器崩溃、网络代理设置不正确或请求被用户取消等情况。

  5. 安全策略:安全策略,如浏览器的同源策略(Same-Origin Policy)或CORS策略(跨域资源共享),可能会阻止HTTP请求或响应的完成,以保护用户的安全和隐私。

  6. 恶意行为:恶意的攻击者可能会采取各种手段中断HTTP请求或响应,例如通过拒绝服务(DDoS)攻击、中间人攻击或劫持网络流量等方式。

如何检查http中断

  1. 检查网络连接

    • 确保您的网络连接正常工作。可以尝试访问其他网站或使用网络工具(如ping或traceroute)检查网络连接是否正常。
    • 如果您使用的是无线网络,请确保您的设备与无线路由器连接稳定,并且信号强度良好。
  2. 检查本地环境

    • 检查您的设备是否有足够的资源来完成HTTP请求或响应。例如,确保您的设备的内存和CPU资源足够,以及磁盘空间是否充足。
    • 检查您的操作系统和浏览器是否是最新版本,并且没有任何已知的问题或安全漏洞。
  3. 使用开发者工具进行调试

    • 如果是在浏览器中发起的HTTP请求,可以使用浏览器的开发者工具(如Chrome DevTools或Firefox Developer Tools)进行调试。这些工具可以帮助您检查网络请求和响应的详细信息,包括请求头、响应头、请求状态等。
    • 检查浏览器控制台是否有任何错误或警告消息,这可能会指示HTTP请求或响应中断的原因。
  4. 查看服务器日志

    • 如果是服务器端出现问题导致HTTP请求或响应中断,可以查看服务器的日志文件,查找相关的错误或异常信息。这可以帮助您确定是服务器端的问题还是客户端的问题。
  5. 尝试其他设备或网络

    • 如果可能的话,尝试使用其他设备或连接到其他网络来测试HTTP请求或响应是否仍然中断。这可以帮助确定是特定设备或网络的问题还是普遍性的问题

HTTP有几种请求方式

HTTP/1.0 定义了 GET、POST 和 HEAD 这三种请求方法,而 HTTP/1.1 新增了 OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 六种请求方法。这些请求方法用于指示客户端对服务器执行不同的操作。

  1. GET:用于从服务器获取资源,通常用于请求数据。

  2. POST:用于向服务器提交数据,通常用于提交表单数据或上传文件。

  3. HEAD:类似于 GET 请求,但服务器只返回响应头部,不返回实际内容,通常用于获取资源的元数据信息而无需实际内容。

  4. OPTIONS:用于获取目标资源所支持的通信选项(例如,支持的 HTTP 方法和跨域请求支持等)。

  5. PUT:用于向服务器上传新创建的内容。

  6. PATCH:用于对资源进行部分修改。

  7. DELETE:用于请求服务器删除指定的资源。

  8. TRACE:用于在目标服务器和客户端之间沿着请求/响应链路发送一条测试消息,用于测试或诊断。

  9. CONNECT:用于建立客户端与目标服务器之间的隧道连接,通常用于 HTTPS 连接的代理。

GET和POST的区别

GET 方法将参数放在 URL 中,这使得它们在请求中可见,因此不适合传输敏感信息,因为它们可能会出现在浏览器历史记录、服务器日志等地方。GET 请求通常用于获取数据,如通过查询字符串传递参数向服务器请求特定资源,例如搜索引擎中的查询。

而 POST 方法将参数放在请求的正文中,这些参数对于客户端是不可见的,因此更适合传输敏感信息,如用户的密码或信用卡信息。POST 请求通常用于提交表单数据、上传文件、执行操作或在服务器上创建资源。

此外,GET 请求的参数长度受到浏览器和服务器的限制,而 POST 请求的参数长度没有明确的限制。因此,当需要传输大量数据时,通常使用 POST 请求。

在应用场景上,GET 通常用于获取数据,而 POST 通常用于向服务器提交数据,例如创建、更新或删除资源。POST 方法还更适合用于处理安全性较高的操作,因为它不会将参数暴露在 URL 中。

DNS的查找过程(应用层)

  1. 浏览器解析 URL:浏览器首先从用户输入的 URL 中解析出主机名(域名)部分。

  2. 本地解析缓存和 hosts 文件:浏览器会检查本地的 DNS 缓存以及系统的 hosts 文件,看是否有该域名的映射记录。如果找到了,将直接使用该映射,无需发起 DNS 查询。

  3. 向本地 DNS 解析器查询:如果在本地缓存和 hosts 文件中找不到对应的映射,浏览器会向本地 DNS 解析器(通常由 ISP 或本地网络提供)发送 DNS 查询请求。

  4. DNS 解析器缓存查询:本地 DNS 解析器会首先检查自己的缓存,看是否有对应的域名解析记录。如果有,将直接返回给浏览器,无需进行进一步的查询。

  5. 向根 DNS 服务器查询:如果本地 DNS 解析器缓存中没有找到对应的解析记录,它会向根 DNS 服务器发起查询请求。

  6. 迭代查询过程:根 DNS 服务器将返回指向顶级域名服务器的 IP 地址。然后,本地 DNS 解析器将向顶级域名服务器发起查询请求,顶级域名服务器将返回指向权威域名服务器的 IP 地址。这个过程会一直迭代下去,直到找到负责该域名的权威域名服务器。

  7. 向权威域名服务器查询:本地 DNS 解析器最终会向负责该域名的权威域名服务器发起查询请求。

  8. 返回结果:权威域名服务器将返回该域名对应的 IP 地址给本地 DNS 解析器。

  9. 结果返回:本地 DNS 解析器将 IP 地址返回给浏览器,并在本地缓存中保存该解析记录,以备将来使用。

IP

IP地址分类

  1. A类地址:A类地址是最早的IP地址分类之一,用于较大的网络,例如大型企业或大学网络。A类地址的第一个字节范围是1到126,其二进制表示的网络号始终以0开头,后面是主机号。因此,A类地址有大约128个网络,每个网络可以容纳大约1677万个主机。

  2. B类地址:B类地址用于中等大小的网络。B类地址的第一个字节范围是128到191,其二进制表示的网络号始终以10开头,后面是主机号。B类地址有大约16,384个网络,每个网络可以容纳大约6万个主机。

  3. C类地址:C类地址用于较小的网络。C类地址的第一个字节范围是192到223,其二进制表示的网络号始终以110开头,后面是主机号。C类地址有大约209万个网络,每个网络可以容纳大约254个主机。

  4. D类地址:D类地址用于多播(Multicast),即一对多通信。D类地址范围从224.0.0.0到239.255.255.255。多播地址是指同时发送给多个目标设备的数据包。

  5. E类地址:E类地址是实验性地址,保留供未来使用。E类地址的范围从240.0.0.0到255.255.255.255,目前还没有被正式分配给任何组织或用途。

当我们谈论IP地址时,我们通常指的是IPv4地址,它由32位二进制数表示,通常以点分十进制的形式表示,例如:192.168.1.1。

IPv4地址分为网络号和主机号两部分,网络号用于标识一个特定的网络,而主机号则用于标识该网络上的特定主机或设备。IPv4地址根据网络号的不同范围,被分为几个类别,即A类、B类、C类、D类和E类地址。

  1. A类地址

    • 范围:1.0.0.0 到 126.255.255.255
    • 默认子网掩码:255.0.0.0
    • 特点:A类地址的第一个字节范围是1到126,其二进制表示的网络号始终以0开头,后面是主机号。这意味着A类地址可以有大约128个网络,每个网络可以容纳大约1677万个主机。A类地址通常用于较大规模的网络,如大型企业网络或互联网服务提供商。
  2. B类地址

    • 范围:128.0.0.0 到 191.255.255.255
    • 默认子网掩码:255.255.0.0
    • 特点:B类地址的第一个字节范围是128到191,其二进制表示的网络号始终以10开头,后面是主机号。B类地址可以有大约16,384个网络,每个网络可以容纳大约6万个主机。B类地址通常用于中等规模的网络,如大学校园网络或中型企业网络。
  3. C类地址

    • 范围:192.0.0.0 到 223.255.255.255
    • 默认子网掩码:255.255.255.0
    • 特点:C类地址的第一个字节范围是192到223,其二进制表示的网络号始终以110开头,后面是主机号。C类地址可以有大约209万个网络,每个网络可以容纳大约254个主机。C类地址通常用于小型网络,如家庭网络或局域网。
  4. D类地址

    • 范围:224.0.0.0 到 239.255.255.255
    • 用途:D类地址用于多播通信,即一对多的通信。多播地址被用于向一组特定的目标设备发送数据包,而不是向整个网络发送。
  5. E类地址

    • 范围:240.0.0.0 到 255.255.255.255
    • 用途:E类地址是保留的实验性地址,尚未被分配给任何组织或用途,预留用于未来可能的用途。
相关推荐
初学者_xuan1 天前
Linux程序与进程和进程程序基础以及程序管理(零基础掌握版)
运维·计算机网络·网络安全·零基础·学习方法·linux程序管理
武文斌771 天前
计算机网络:服务器处理多客户端(并发服务器)
网络·计算机网络
不会学习?1 天前
计算机网络
经验分享·笔记·计算机网络
哦你看看2 天前
计算机网络技术(下)
网络·计算机网络
神齐的小马2 天前
计算机网络学习笔记
笔记·学习·计算机网络
superlls4 天前
(计算机网络)JWT三部分及 Signature 作用
java·开发语言·计算机网络
.Shu.5 天前
计算机网络 TLS握手中三个随机数详解
网络·计算机网络·安全
.Shu.5 天前
计算机网络 各版本TLS握手的详细过程
网络·计算机网络
最好的药物是乌梅5 天前
OSI参考模型&TCP/IP模型 二三事
tcp/ip·计算机网络·408·流量控制·osi模型·计算机考研·拥塞控制
谢尔登5 天前
【计算机网络】 IPV4和IPV6区别
运维·服务器·计算机网络