互联网是如何运作的
原文:互联网是如何运作的
以下是我的总结,更好的学习建议阅读原文。
介绍
互联网所有的传输都通过TCP/IP协议族来传输,TCP/IP是面向连接的可靠字节流服务协议
TCP/IP协议栈
您的计算机已连接到 Internet 并具有唯一的地址。它如何与连接到 Internet 的其他计算机“交谈”?
这里应该有一个例子:假设您的 IP 地址是 1.2.3.4,并且您想向计算机 5.6.7.8 发送一条消息。您要发送的消息是“Hello computer 5.6.7.8!”。显然,消息必须通过将您的计算机连接到 Internet 的任何类型的线路传输。假设您已从家里拨入您的 ISP,并且消息必须通过电话线传输。必须将消息从字母文本翻译成电子信号,通过互联网传输,然后再翻译回字母文本。 这是如何实现的?
通过使用协议栈。每台计算机都需要一台在 Internet 上进行通信,它通常内置于计算机的操作系统(即 Windows、Unix 等)中。由于使用了两种主要的通信协议,Internet 上使用的协议栈被称为 TCP/IP 协议栈。TCP/IP 堆栈如下所示:
- 应用层:提供特定于应用程序的协议 HTTP FTP IMAP(邮件)
- 网络控制层(TCP):发送数据包到计算机上使用特定的端口号的应用程序
- 网络层(IP):使用IP地址将数据包发送到特定的计算
- 链路层:将二进制数据包与网络信号相互之间转换(例如以太网网卡、电话线调制解调器等)
HTTP
HTTP 是 Web 浏览器和 Web 服务器用于通过 Internet 相互通信的协议。它是一种应用程序级协议,因为它位于协议栈中 TCP 层的顶部,并被特定应用程序用于相互通信。在这种情况下,应用程序是 Web 浏览器和 Web 服务器。
HTTP是一种基于无连接文本的协议。客户端(Web 浏览器)向 Web 服务器发送对 Web 元素(例如网页和图像)的请求。请求被服务器服务后,客户端和服务器之间通过 Internet 的连接断开。必须为每个请求建立一个新连接。大多数协议都是面向连接的。这意味着相互通信的两台计算机通过 Internet 保持连接打开。然而,HTTP 没有。在客户端发出 HTTP 请求之前,必须建立到服务器的新连接。
当您在 Web 浏览器中键入 URL 时,会发生以下情况:
- 如果 URL 包含域名,则浏览器首先连接到域名服务器并为 Web 服务器检索相应的 IP 地址。
- Web 浏览器连接到 Web 服务器并为所需的网页发送 HTTP 请求(通过协议栈)。
- Web 服务器接收请求并检查所需页面。如果页面存在,则 Web 服务器发送它。如果服务器找不到请求的页面,它将发送 HTTP 404 错误消息。(404 的意思是“找不到页面”,任何浏览过网络的人都可能知道。)
- Web 浏览器接收回页面并关闭连接。
- 然后浏览器解析页面并查找完成网页所需的其他页面元素。这些通常包括图像、小程序等。
- 对于每个需要的元素,浏览器会为每个元素向服务器发出额外的连接和 HTTP 请求。
- 当浏览器加载完所有图像、小程序等后,页面将完全加载到浏览器窗口中。
TCP(传输控制协议)
在协议栈的应用层之下是TCP层。当应用程序打开与 Internet 上另一台计算机的连接时,它们发送的消息(使用特定的应用程序层协议)会沿堆栈向下传递到 TCP 层。TCP 负责将应用程序协议路由到目标计算机上的正确应用程序。 为此,使用端口号。端口可以被认为是每台计算机上的独立通道。例如,您可以在阅读电子邮件时上网。这是因为这两个应用程序(Web 浏览器和邮件客户端)使用了不同的端口号。当数据包到达计算机并沿协议栈向上时,TCP 层根据端口号决定哪个应用程序接收数据包。
TCP 是这样工作的:
- 当 TCP 层从上面接收到应用层协议数据时,它会将其分段为可管理的“块”,然后将带有特定 TCP 信息的 TCP 标头添加到每个“块”。TCP 头中包含的信息包括数据需要发送到的应用程序的端口号。
- 当 TCP 层接收到来自其下方 IP 层的数据包时,TCP 层会从数据包中剥离 TCP 头数据,必要时进行一些数据重构,然后使用从 TCP 获取的端口号将数据发送到正确的应用程序标题。
这就是 TCP 将通过协议栈移动的数据路由到正确应用程序的方式。
TCP 不是文本协议。TCP 是面向连接的、可靠的字节流服务。面向连接意味着两个使用 TCP 的应用程序在交换数据之前必须先建立连接。TCP 是可靠的,因为对于收到的每个数据包,都会向发送方发送确认以确认交付。TCP 还在其标头中包含一个校验和,用于对接收到的数据进行错误检查。
tcp在建立连接会进行三次握手,每个收到的数据包都会向发送方发送ack确认,已确保发送成功
IP(互联网协议)
与 TCP 不同,IP 是一种不可靠的无连接协议。IP 不关心数据包是否到达目的地。IP 也不知道连接和端口号。 IP 的工作也是将数据包发送和路由到其他计算机。IP 数据包是独立的实体,可能无序到达或根本没有到达。TCP 的工作是确保数据包到达并以正确的顺序。IP 与 TCP 的唯一共同点是它接收数据并将其自己的 IP 标头信息添加到 TCP 数据。
IP是不可靠的无连接协议,它并不关心数据包是否到达目的地,也不关系连接和端口号,目的是连接到目标IP
Ip是一种协议 有两种标准 IPv4 2^32次方和IPv6 2^128
TCP传输的质量和顺序
当数据包过大,在网络层会进行分包,分包后传输的链路不一样,到达的时间不一样,TCP会根据数据包上携带序列号来进行排序重组,如果发送方在一个特定时间内(也就是重试时间)没有接受到接收方的ack确认,会再次重新发送
#网络传输
- 个人电脑
- 猫(调制解调器)
- local ISP 互联网服务提供商
- regional ISP 经过多个主干网络
- NSP 网络服务提供商 大型网络 卖带宽给ISP
- NAP 每个NSP连接到至少三个网络访问点
- ISP NSP 所有网络提供都携带路由器,每个路由有当前子网络ip的路由表,当底层向上层发送数据时候,找不到会依次向上找,可能由一个主干网络跳到另外一个主干网络。
DNS服务
存在意义是IP别名,不让公司丢客户,也容易记,DNS是一个分布式数据库,存储了域名和IP的对应关系