网络基础 总览

TCP / IP 协议族

互联网协议是一个网络通信模型,以及一整个网络传输协议家族,为互联网的基础通信架构。它常被通称为TCP/IP协议族简称TCP/IP。因为该协议家族的两个核心协议:TCP(传输控制协议)和IP(网际协议),为该家族中最早通过的标准。TCP/IP提供点对点的链接机制,将数据应该如何封装、定址、传输、路由以及在目的地如何接收,都加以标准化。它将软件通信过程抽象化为四个抽象层,采取协议堆栈的方式,分别实现出不同通信协议。

TCP/IP参考模型是一个抽象的分层模型,这个模型中,所有的TCP/IP系列网络协议都被归类到4个抽象的"层"中。每一抽象层创建在低一层提供的服务上,并且为高一层提供服务。 完成一些特定的任务需要众多的协议协同工作,这些协议分布在参考模型的不同层中的,因此有时称它们为一个协议栈。

四层主要作用:

应用层:该层包括所有和应用程序协同工作,利用基础网络交换应用程序专用的数据的协议。
传输层:能够解决诸如端到端可靠性(“数据是否已经到达目的地?”)和保证数据按照正确的顺序到达这样的问题。
网络层:解决在一个单一网络上传输数据包的问题。
链路层:它是数据包从一个设备的网络层传输到另外一个设备的网络层的方法。

分层的目的在于更为有效的传输数据,例如如果要传输的一个大块儿数据在网络上传输,但是网络本身就是不稳定的,你不知道哪个路由是好的,哪个是坏的,如果一大块儿数据被传到坏的路由器,那么只能整体重新传输,效率十分底下,如果使用了tcp的分割,哪儿部分没有传递成功,我们只需要传递失败的部分,会大大提高传输效率。

这四层分别是:应用层(HTTP FTP DNS VoIP SSH IMAP SMTP TLS/SSL 等)传输层(TCP UDP)网络层(IP ICMP) 链路层(以太网 ARP)。我们来调几个重要的记录一下。

IP

网络层的主要作用是:实现主机与主机之间的通信,也叫点对点(end to end)通信。

IP(网络层) 和 MAC (数据链路层)之间的区别和关系:MAC 的作用则是实现「直连」的两个设备之间通信,而 IP 则负责在「没有直连」的两个网络之间进行通信传输。在网络中数据包传输中也是如此,源IP地址和目标IP地址在传输过程中是不会变化的,只有源 MAC 地址和目标 MAC 一直在变化。

IP 地址

IP 地址(IPv4 地址)由 32 位正整数来表示,IP 地址在计算机是以二进制的方式处理的,采用点分十进制的标记方式。

因此 IP 最大地址为:255.255.255.255,总量在 2的32 次幂约为 43亿。

TCP (Transmission Control Protocol)

TCP 是一种面向连接的、可靠的、基于字节流的传输层通信协议。应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分割成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传输单元(MTU)的限制)。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的包发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据包就被假设为已丢失将会被进行重传。TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。 TCP协议的运行可划分为三个阶段:连接创建(connection establishment)、数据传送(data transfer)和连接终止(connection termination)。

通信双方建立确认「可以通信」,不会将对方的消息丢弃,即为「建立连接」

UDP(User Datagram Protocol)

UDP只提供数据的不可靠传递,它一旦把应用程序发给网络层的数据发送出去,就不保留数据备份(所以UDP有时候也被认为是不可靠的数据报协议)。由于缺乏可靠性且属于非连接导向协议,UDP应用一般必须允许一定量的丢包、出错和复制粘贴。因此 UDP 的每个数据包是没有编号的,UDP通过16位源端口号和16位目的端口号来实现应用程序间的区分。16位UDP校验和可以实现传输层的校验,虽然UDP协议不具备纠错能力,但是可以对出错的数据包进行丢弃。

为什么不能用 IP 代替 UDP:因为ip关心的是逐跳转发的选路细节,ip的不可靠指的不是某种服务,而是尽力而为传输ip数据包。tcp和udp为上层提供端到端的连接并开启相应端口,不关心选路细节。两者功能都不一样,当然不能用ip代替udp。可以把IP协议当作盒子,里面存放 TCP 或者 UDP 等不同的报文,具体里面的数据对应的哪个部分由报文决定。IP只是给你传过来了,侧面的说 UDP 的不可靠性就是 IP 的不可靠性引起的,如果 IP 可靠了,UDP 就可靠了。

当输入url后回车,背后会进行哪些技术步骤

  • 浏览器会对输入url进行校验
  • 浏览器获取IP地址:
    • DNS 本地解析:查找内存;查找本地host
    • DNS 远程解析:通过UDP查找远程DNS服务器
      • IP 协议查询 IP路由表,需要查询网关 MAC 地址。使用 ARP 协议,来获取。
      • 尝试从ISP(internet service provider)的DNS服务器中查找是否缓存有对应IP(DNS 劫持就是发生在这里的)
      • 如果也没有,会尝试访问远程 DNS 服务器,如:Google 的 8:8:8:8
      • 如果也没有,会以此访问 13个根域名服务器之一->顶级域名服务器(.com .net等)->权威域名服务器(service.com 等),最后获取结果返回。(DNS 污染是发生在这里的)
  • 建立TCP的链接
    • 三次握手建立通信
    • TLS建立

results matching ""

    No results matching ""