计算机网络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类地址是保留的实验性地址,尚未被分配给任何组织或用途,预留用于未来可能的用途。
相关推荐
打鱼又晒网40 分钟前
linux网络套接字 | 深度解析守护进程 | 实现tcp服务守护进程化
linux·网络协议·计算机网络·tcp
njnu@liyong13 小时前
图解HTTP-HTTP报文
网络协议·计算机网络·http
GISer_Jing13 小时前
2025前端面试热门题目——计算机网络篇
前端·计算机网络·面试
ZachOn1y14 小时前
计算机网络:应用层 —— 应用层概述
计算机网络·http·https·应用层·dns
冰镇屎壳郎16 小时前
计算机网络 八股青春版
计算机网络
网络安全King18 小时前
计算机网络基础(2):网络安全/ 网络通信介质
计算机网络·安全·web安全
敲代码娶不了六花1 天前
对计算机网络中“层”的理解
网络·网络协议·tcp/ip·计算机网络
njnu@liyong1 天前
图解HTTP-HTTP状态码
网络协议·计算机网络·http
斐夷所非2 天前
计算机网络基础图解
计算机网络
ZachOn1y2 天前
计算机网络:运输层 —— TCP 的选择确认(SACK)
网络·tcp/ip·计算机网络·可靠传输·sack·选择确认