【计算机网络】分层模型(OSI、TCP/IP)、应用协议(SMTP、HTTP、HTTPS)、传输协议(UDP、TCP)、网络协议(IP、DNS)、数据链路层协议

文章目录

  • 〇、协议基础
    • 1.协议的必要性
    • 2.协议的分层
  • 一、TCP/IP基础知识
    • 1.TCP/IP是什么
    • 2.OSI七层模型
    • 3.TCP/IP 五层/四层模型
    • 4.两种模型的区别
  • 二、应用层/表示层/会话层协议
    • 1.协议一:远程登录协议(略)
    • 2.协议二:文件传输(略)
    • 3.协议三:电子邮件SMTP
      • (0)SMTP的基本原理
      • (1)邮件地址
      • (2)数据格式MIME
      • (3)发送协议SMTP
      • (4)接收协议POP
      • (5)接收协议IMAP
    • 4.协议四:万维网
      • (1)访问信息的手段与位置URI
      • (2)信息的表现形式HTML
      • (3)信息转发HTTP
        • ①HTTP的基本思路
        • ②生成HTTP请求和响应消息
        • ④关于HTTPS的区别
      • (4)其他
        • ①CGI
        • ②Cookie
  • 三、传输层协议UDP、TCP
    • 1.基础知识
      • (1)传输层的两种协议TCP、UDP
      • (2)套接字
      • (3)端口号
    • 2.UDP
    • 3.TCP
      • (1)提高可靠性:通过序列号与确认应答
      • (2)重发超时如何确定
      • (3)连接管理(三次握手、四次挥手)
      • (4)数据分段
      • (5)利用窗口控制提高速度
      • (6)拥塞控制
  • 四、网络层协议IP
    • 1.什么是IP
    • 2.IP第一作用模块:IP地址(网络层地址)
      • (1)IP地址的基本思路
      • (2)IP地址的结构与分类
      • (3)网络通信时,域名和IP地址并用的理由
      • (4)网络层数据传播方式:根据接收端数量分类
      • (5)子网掩码
    • 3.IP第二作用模块:路由控制
    • 4.IP第三作用模块:IP分包与组包
      • (1)面向有连接型与面向无连接型
      • (2)电路交换和分组交换
    • 5.IPv6和IPv4的区别
    • 6.IPv4首部
    • 7.DNS
  • 五、数据链路层协议
    • 0.MAC地址
      • (1)什么是MAC地址
      • (2)MAC地址的作用
      • (3)具体的通信方式
      • (4)例外情况:MAC地址不一定是唯一的
      • (5)根据MAC地址识别厂商
    • 1.数据链路分类
    • 2.其他链路
    • 3.公共网络

〇、协议基础

1.协议的必要性

  简单来说,协议就是计算机与计算机之间通过网络实现通信时事先达成的一种“约定"。这种“约定”使那些由不同厂商的设备、不同的CPU以及不同的操作系统组成的计算机之间,只要遵循相同的协议就能够实现通信。反之,如果所使用的协议不同,就无法实现通信。这就好比两个人使用不同国家的语言说话,怎么也无法相互理解。协议可以分为很多种,每一种协议都明确地界定了它的行为规范。两台计算机之间必须能够支持相同的协议,并遵循相同协议进行处理,这样才能实现相互通信。
  协议如同人说话使用的语言。

2.协议的分层

  在每一层实现的协议也各不同。
【计算机网络】分层模型(OSI、TCP/IP)、应用协议(SMTP、HTTP、HTTPS)、传输协议(UDP、TCP)、网络协议(IP、DNS)、数据链路层协议_第1张图片

一、TCP/IP基础知识

1.TCP/IP是什么

  指与TCP或IP关系紧密的网际协议族。如下图:

【计算机网络】分层模型(OSI、TCP/IP)、应用协议(SMTP、HTTP、HTTPS)、传输协议(UDP、TCP)、网络协议(IP、DNS)、数据链路层协议_第2张图片

2.OSI七层模型

  在这一模型中,每个分层都接收由它下一层所提供的特定服务,并且负责为自己的上一层提供特定的服务。上下层之间进行交互时所遵循的约定叫做“接口”。同一层之间的交互所遵循的约定叫做“协议”。每一层实现各自的功能和协议,并完成与相邻层的接口通信。
【计算机网络】分层模型(OSI、TCP/IP)、应用协议(SMTP、HTTP、HTTPS)、传输协议(UDP、TCP)、网络协议(IP、DNS)、数据链路层协议_第3张图片

首先网络的发明就是为了应用,那么应用层在顶端就无可厚非了。

数据有了相对应的表示(数据格式化、代码转换、加密)才可以(应)用,要不然就乱了套了,也就没法服务于应用层了,那么也就有了表示层

表示层定义了数据的格式,它必定会有相应的会话支持,否则发送方和接收方不能一一对应了,随即会话层应运而生。

会话是建立在发送端和接受端,那么发送端和接受端传输数据也就必不可少了,传输层也就随之诞生。

传输层的建立,不可能一次性找到接受端(局域网的存在),而是通过路由才能到达接收端,这样网络层就发挥了作用。

网络层必然有很多子网组成,那么可以理解为通过数据链路层将很多的子网链接起来,形成数据链路层。

物理层最好理解,数据的发送接受需要一个载体:即光纤,线缆等。
【计算机网络】分层模型(OSI、TCP/IP)、应用协议(SMTP、HTTP、HTTPS)、传输协议(UDP、TCP)、网络协议(IP、DNS)、数据链路层协议_第4张图片

3.TCP/IP 五层/四层模型

【计算机网络】分层模型(OSI、TCP/IP)、应用协议(SMTP、HTTP、HTTPS)、传输协议(UDP、TCP)、网络协议(IP、DNS)、数据链路层协议_第5张图片

4.两种模型的区别

  • OSI引进了服务、接口、协议、分层的概念,TCP/IP借鉴了OSI的这些概念建立TCP/IP模型。
  • OSI先有模型,后有协议,先有标准,后进行实践;而TCP/IP则相反,先有协议和应用,再提出了模型,且是参照OSI模型。
  • OSI是一种理论下的模型,而TCP/IP已经被广泛应用,称为网络互联实施上的标准。

二、应用层/表示层/会话层协议

  利用网络的应用程序有很多,包括Web浏览器、电子邮件、远程登录、文件传输、网络管理等。能够让这些应用进行特定通信处理的正是应用协议。而应用协议则是为了实现某种应用而设计和创造的协议。在TCP/IP中,下层协议是不依赖于上层协议,上层协议可以直接享用下层协议。
  为了实现网络应用的功能,在应用之间进行通信时将其连接的网络协议是非常重要的。

1.协议一:远程登录协议(略)

【计算机网络】分层模型(OSI、TCP/IP)、应用协议(SMTP、HTTP、HTTPS)、传输协议(UDP、TCP)、网络协议(IP、DNS)、数据链路层协议_第6张图片

2.协议二:文件传输(略)

【计算机网络】分层模型(OSI、TCP/IP)、应用协议(SMTP、HTTP、HTTPS)、传输协议(UDP、TCP)、网络协议(IP、DNS)、数据链路层协议_第7张图片

3.协议三:电子邮件SMTP

【计算机网络】分层模型(OSI、TCP/IP)、应用协议(SMTP、HTTP、HTTPS)、传输协议(UDP、TCP)、网络协议(IP、DNS)、数据链路层协议_第8张图片
  电子邮件,顾名思义,就是指网络上的邮政。通过电子邮件人们可以发送编写的文字内容、数码相片,还可以发送各种报表计算得出的数据等所有计算机可以存储的信息。
  电子邮件的发送距离不受限,可以在全世界互联网中的任何两方之间进行收发。如果没有电子邮件,出差时也就无法接收最新的邮件信息。电子邮件还可以提供邮件组(群发邮件)的服务。

(0)SMTP的基本原理

  早期电子邮件是在发送端主机与接收端主机之间直接建立TCP连接进行邮件传输。发送人编写好邮件以后,其内容会保存在发送端主机的硬盘中。然后与对端主机建立TCP连接,将邮件发送到对端主机的硬盘。当发送正常结束后,再从本地硬盘中删除邮件。而在发送过程中一旦发现对端计算机因没有插电等原因没有收到邮件时,发送端将等待一定时间后重发。
  后来,在技术上改变了以往直接在发送端与接收端主机之间建立TCP连接的机制,而引进了一种一直会连接电源的邮件服务器。发送和接收端通过邮件服务器进行收发邮件。接收端从邮件服务器接收邮件时使用POP3协议。
  电子邮件的机制由3部分组成,它们分别是邮件地址,数据格式以及发送协议。

(1)邮件地址

  使用电子邮件时需要拥有的地址叫做邮件地址。它就相当于通信地址和姓名。互联网中电子邮件地址的格式如下:名称@通信地址

(2)数据格式MIME

  很长一段时间里,互联网中的电子邮件只能处理文本格式的邮件。不过现在,电子邮件所能发送的数据类型已被扩展到mimet,可以发送静态图像、动画、声音、程序等各种形式的数据。鉴于MIME规定了应用消息的格式,因此在OSI参考模型中它相当于第6层表示层。

(3)发送协议SMTP

  略。

(4)接收协议POP

  POP协议是一种用于接收电子邮件的协议。发送端的邮件根据SMTP协议将被转发给一直处于插电状态的POP服务器。客户端再根据POP协议从POP服务器接收对方发来的邮件。在这个过程中,为了防止他人盗窃邮件内容,还要进行用户验证。
  POP与SMTP 一样,也是在其客户端与服务器之间通过建立一个TCP连接完成相应操作。
【计算机网络】分层模型(OSI、TCP/IP)、应用协议(SMTP、HTTP、HTTPS)、传输协议(UDP、TCP)、网络协议(IP、DNS)、数据链路层协议_第9张图片

(5)接收协议IMAP

  IMAP与POP类似,也是接收电子邮件的协议。在POP中邮件由客户端进行管理,而在IMAP中邮件则由服务器进行管理。
  使用IMAP时,可以不必从服务器上下载所有的邮件也可以阅读。由于IMAP是在服务器端处理MIME信息,所以它可以实现当某一封邮件含有10个附件时“只下载其中的第7个附件”的功能‘°这在带宽较窄的线路上起着非常重要的作用。而且IMAP在服务器上对“已读/未读”信息和邮件分类进行管理,因此,即使在不同的计算机上打开邮箱,也能保持同步,使用起来非常方便如此一来,使用IMAP,在服务器上保存和管理邮件信息,就如同在自己本地客户端的某个闪存中管理自己的信息一样简单。
  有了 IMAP人们就可以通过个人电脑、公司的电脑、笔记本电脑以及智能手机等连接到IMAP服务器以后进行收发邮件。由此,在公司下载的电子邮件就不必在笔记本电脑和智能手机上转来转去\ IMAP确实为使用多种异构终端的人们提供了非常便利的环境。

4.协议四:万维网

  WWW定义了几个重要的概念:访问信息的手段与位置(URI)、信息的表现形式(HTML)、信息转发(HTTP)等等。

(1)访问信息的手段与位置URI

  URI是Uniform Resource Identifier的缩写,用于标识资源。URI是一种可以用于WWW之外的高效的识别码,它被用于主页地址、电子邮件、电话号码等各种组合中。如下所示:

	http://www. rfc-editor. org/rfc/rfc4395. txt
	http://www. ietf.org: 80/index. html
	http://localhost: 631/

  这些例子属于一般主页地址,也被叫做URL ( Uniform Resource Locator)。URL常被人们用来表示互联网中资源(文件)的具体位置。但是URI不局限于标识互联网资源,它可以作为所有资源的识别码。

(2)信息的表现形式HTML

  HTMP是记述Web页的一种语言(数据格式)。它可以指定浏览器中显示的文字、文字的大小和颜色。此外,不仅可以对图像或动画进行相关设置,还可以设置音频内容。
  HTML具有纯文本的功能。在页面中不仅可以为文字或图像附加链接,当用户点击那些链接时还可以呈现该链接所指示的内容,因此它可以将整个互联网中任何一个WWW服务器中的信息以链接的方式展现。绝大多数互联网中的Web页,都以链接的形式指向关联的其他信息。逐一点开这些链接就可以了解全世界的信息。
  HTML也可以说是WWW通用的数据表现协议。即使是在异构的计算机上,只要是可以用HTML展现的数据,那么效果基本上是一致的。如果把它对应到OSI参考模型,那么可以认为HTML属于WWW的表示层不过,鉴于现代计算机网络的表示层尚未完全准备就绪,根据操作系统和所用软件的不同,最终表现出来的效果也可能会出现细微差别。

  JavaScript
  JavaScript是一种嵌入在HTML中的编程语言,作为客户端程序可以运行于多种类型的浏览器中。这些浏览器将嵌入JavaScript的HTML下载后,其对应的JavaScript程序就可以在客户端得到执行。这种JavaScript程序用于验证客户端输入字符串是否过长、是否填写或选择了页面中的必须选项等功能JavaScript还可以用于操作HTML或XML的逻辑结构(DOM, Document Object Model)以及动态显示Web页的内容和页面风格上。最近,更是盛行服务器端不需要读取整个页面而是通过JavaScript操作DOM来实现更为生动的Web页面的技术。这就是Ajax(Asynchronous JavaScrip and XML)技术。

(3)信息转发HTTP

①HTTP的基本思路

【计算机网络】分层模型(OSI、TCP/IP)、应用协议(SMTP、HTTP、HTTPS)、传输协议(UDP、TCP)、网络协议(IP、DNS)、数据链路层协议_第10张图片
  首先,客户端会向服务器发送请求消息。请求消息中包含的内容是“对什么”(URI,各种访问目标)和“进行怎样的操作”(方法)两个部分。操作的场景不同,方法也会不同。
  1 条请求消息中只能写 1 个 URI。如果需要获取多个文件,必须对每个文件单独发送 1 条请求。
  HTTP的主要方法如下:
【计算机网络】分层模型(OSI、TCP/IP)、应用协议(SMTP、HTTP、HTTPS)、传输协议(UDP、TCP)、网络协议(IP、DNS)、数据链路层协议_第11张图片
  收到请求消息之后, Web 服务器会对其中的内容进行解析,通过 URI和方法来判断“对什么”“进行怎样的操作”,并根据这些要求来完成自己的工作,然后将结果存放在响应消息中。在响应消息的开头有一个状态码,它用来表示操作的执行结果是成功还是发生了错误。当我们访问 Web 服务器时,遇到找不到的文件就会显示出 404 Not Found 的错误信息,其实这就是状态码。状态码后面就是头字段和网页数据。响应消息会被发送回客户端,客户端收到之后,浏览器会从消息中读出所需的数据并显示在屏幕上。到这里,HTTP 的整个工作就完成了。

  Get方法:
  首先,在请求消息中写上 GET 方法,然后在 URI 中写上存放网页数据的文件名“/dir1/file1.html”,这就表示我们需要获取 /dir1/file1.html 文件中的数据。当 Web 服务器收到消息后,会打开 /dir1/file1.html 文件并读取出里面的数据,然后将读出的数据存放到响应消息中,并返回给客户端。最后,客户端浏览器会收到这些数据并显示在屏幕上。
  Post方法:
  我们在表单 A 中填写数据并将其发送给 Web 服务器时就会使用这个方法。当我们在网上商城填写收货地址和姓名,或者是在网上填写问卷时,都会遇到带有输入框的网页,而这些可以输入信息的部分就是表单。

②生成HTTP请求和响应消息

  A.请求消息和响应消息格式
  对 URL 进行解析之后,浏览器确定了 Web 服务器和文件名,接下来就是根据这些信息来生成 HTTP 请求消息了。

【计算机网络】分层模型(OSI、TCP/IP)、应用协议(SMTP、HTTP、HTTPS)、传输协议(UDP、TCP)、网络协议(IP、DNS)、数据链路层协议_第12张图片

  B.主要的头字段

【计算机网络】分层模型(OSI、TCP/IP)、应用协议(SMTP、HTTP、HTTPS)、传输协议(UDP、TCP)、网络协议(IP、DNS)、数据链路层协议_第13张图片
【计算机网络】分层模型(OSI、TCP/IP)、应用协议(SMTP、HTTP、HTTPS)、传输协议(UDP、TCP)、网络协议(IP、DNS)、数据链路层协议_第14张图片
【计算机网络】分层模型(OSI、TCP/IP)、应用协议(SMTP、HTTP、HTTPS)、传输协议(UDP、TCP)、网络协议(IP、DNS)、数据链路层协议_第15张图片

  C.响应消息的状态码

【计算机网络】分层模型(OSI、TCP/IP)、应用协议(SMTP、HTTP、HTTPS)、传输协议(UDP、TCP)、网络协议(IP、DNS)、数据链路层协议_第16张图片

④关于HTTPS的区别

  参考

(4)其他

①CGI

  CGI,是Web服务器调用外部程序时所使用的一种服务端应用的规范。一般的Web通信中,只是按照客户端请求将保存在Web服务器硬盘中的数据转发而已。这种情况下客户端每次收获的信息也是同样(静态)的内容。而引入CGI以后客户端请求会触发Web服务器端运行另一个程序,客户端所输入的数据也会传给这个外部程序。该程序运行结束后会将生成的HTML和其他数据再返回
给客户端。
  利用CGI可以针对用户的操作返回给客户端有各种各样变化(动态)的信息。论坛和网上购物系统中就经常使用CGI调用外部程序或访问数据库。

②Cookie

  Web应用中为了获取用户信息使用一个叫做Cookie的机制。Web服务器用Cookie在客户端保存信息’(多为“用户名”和“登录名”等信息)。Cookie常被用于保存登录信息或网络购物中放入购物车的商品信息。
  从Web服务器检査Cookie可以确认是否为同一对端的通信。从而存放于购物车里的商品信息就不必要在保存到服务器了。

三、传输层协议UDP、TCP

1.基础知识

(1)传输层的两种协议TCP、UDP

  TCP用于在传输层有必要实现可靠传输的情况。由于它是面向有连接并具备顺序控制、重发控制等机制的,所以它可以为应用提供可靠传输。而在一方面,UDP主要用于那些对高速传输和实时性有较高要求的通信或广播通信。
  我们挙一个通过IP电话进行通话的例子。如果使用TCP,数据在传送途中如果丢失会被重发,但这样无法流畅地传输通话人的声音,会导致无法进行正常交流。而采用UDP,它不会进行重发处理。从而也就不会有声音大幅度延迟到达的问题。

(2)套接字

  使用TCP或UDP通信时,又会广泛使用到套接字(socket)的API。应用程序利用套接字,可以设置对端的IP地址、端口号,并实现数据的发送与接收。

(3)端口号

  所谓端口号就是具有网络功能的应用软件的标识号。注意,端口号是不固定的,即可以由用户手工可以分配(当然,一般在软件编写时就已经定义)。一个软件可以拥有多个端口号,这证明这个软件拥有不止一个网络功能。
  当一台电脑启动了一个可以让远程其他电脑访问的程序,那么它就要开启至少一个端口号来让外界访问。我们可以把没有开启端口号的电脑看作是一个密封的房间,密封的房间当然不可能接受外界的访问,所以当系统开启了一个可以让外界访问的程序后它自然需要在房间上开一个窗口来接受来自外界的访问,这个窗口就是端口。
  那么为什么要给端口编号来区分它们呢,既然一个程序开了一个端口,那么不是外部信息都可以通过这个开启的端口来访问了吗?答案是不可以。为什么呢?因为数据是用端口号来通知传输层协议送给哪个软件来处理的,数据是没有智慧的,如果很多的程序共用一个端口来接受数据的话,那么当外界的一个数据包送来后传输层就不知道该送给哪一个软件来处理,这样势必将导致混乱。

2.UDP

  UDP是一种没有复杂控制,提供面向无连接通信服务的一种协议。换句话说,它将部分控制转移给应用程序去处理,自己却只提供作为传输层协议的最基本功能。
  面向无连接,丢包不重发,不会顺序纠正,无法进行流量控制。但是速度快。
  常用于以下几个方面:

  • 包总量较少的通信(DNS、SNMP等)
  • 视频、音频等多媒体通信(即时通信)
  • 限定于LAN等特定网络中的应用通信
  • 广播通信(广播、多播)

3.TCP

  TCP充分实现了数据传输时各种控制功能,比如丢包时的重发控制、对次序乱掉的分包进行顺序控制,此外作为一种面向有连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。因此,TCP能够实现高可靠性的通信。

(1)提高可靠性:通过序列号与确认应答

【计算机网络】分层模型(OSI、TCP/IP)、应用协议(SMTP、HTTP、HTTPS)、传输协议(UDP、TCP)、网络协议(IP、DNS)、数据链路层协议_第17张图片
  **确认应答:**在TCP中,当发送端的数据到达接收主机时,接收端主机会返回一个已收到消息的通知,也就是确认应答(ACK)。若数据丢失、返回的确认应答在返回途中丢失,或因为其他原因确认应答延迟到达,都会导致发送端接收不到确认应答,从而进行重新发包。
  **序列号:**为了避免TCP一直重新发包,上述这些确认应答处理、重发控制以及重复控制等功能都可以通过序列号实现。序列号是按顺序给发送数据的每一个字节(8位字节)都标上号码的编号接收端査询接收数据TCP首部中的序列号和数据的长度,将自己下一步应该接收的序号作为确认应答返送回去。就这样,通过序列号和确认应答号,TCP可以实
现可靠传输。
【计算机网络】分层模型(OSI、TCP/IP)、应用协议(SMTP、HTTP、HTTPS)、传输协议(UDP、TCP)、网络协议(IP、DNS)、数据链路层协议_第18张图片

(2)重发超时如何确定

  重发超时是指在重发数据之前,等待确认应答到来的那个特定时间间隔。如果超过了这个时间仍未收到确认应答,发送端将进行数据重发。那么这个重发超时的具体时间长度又是如何确定的呢?
  最理想的是,找到一个最小时间,它能保证“确认应答一定能在这个时间内返回”。然而这个时间长短随着数据包途径的网络环境的不同而有所变化。例如在高速的LAN中时间相对较短,而在长距离的通信当中应该比LAN要长一些。即使是在同一个网络中,根据不同时段的网络拥堵程度时间的长短也会发生变化。

(3)连接管理(三次握手、四次挥手)

【计算机网络】分层模型(OSI、TCP/IP)、应用协议(SMTP、HTTP、HTTPS)、传输协议(UDP、TCP)、网络协议(IP、DNS)、数据链路层协议_第19张图片

(4)数据分段

  在建立TCP连接的同时,也可以确定发送数据包的单位,我们也可以称其为“最大消息长度”(MSS: Maximum Segment Size)。最理想的情况是,最大消息长度正好是IP中不会被分片处理的最大数据长度。TCP在传送大量数据时,是以MSS的大小将数据进行分割发送。进行重发时也是以MSS为单位。
  MSS是在三次握手的时候,在两端主机之间被计算得出。两端的主机在发出建立连接的请求时,会在TCP首部中写入MSS选项,告诉对方自己的接口能够适应的MSS的大小。然后会在两者之间选择一个较小的值投入使用。
【计算机网络】分层模型(OSI、TCP/IP)、应用协议(SMTP、HTTP、HTTPS)、传输协议(UDP、TCP)、网络协议(IP、DNS)、数据链路层协议_第20张图片

(5)利用窗口控制提高速度

  TCP以1个段为单位,每发一个段进行一次确认应答的处理,如下图。这样的传输方式有一个缺点。那就是,包的往返时间越长通信性能就越低。
【计算机网络】分层模型(OSI、TCP/IP)、应用协议(SMTP、HTTP、HTTPS)、传输协议(UDP、TCP)、网络协议(IP、DNS)、数据链路层协议_第21张图片
  为解决这个问题,TCP引入了窗口这个概念。即使在往返时间较长的情况下,它也能控制网络性能的下降。图6.15所示,确认应答不再是以每个分段,而是以更大的单位进行确认时,转发时间将会被大幅度的缩短。也就是说,发送端主机,在发送了一个段以后不必要一直等待确认应答,而是继续发送。
【计算机网络】分层模型(OSI、TCP/IP)、应用协议(SMTP、HTTP、HTTPS)、传输协议(UDP、TCP)、网络协议(IP、DNS)、数据链路层协议_第22张图片
  窗口大小就是指无需等待确认应答而可以继续发送数据的最大值。
  滑动窗口 在滑动窗口以外的部分包括尚未发送的数据以及已经确认对端已收到的数据。当数据发出后若如期收到确认应答就可以不用再进行重发,此时数据就可以从缓存区清除。
  收到确认应答的情况下,将窗口滑动到确认应答中的序列号的位置。这样可以顺序地将多个段同时发送提高通信性能。这种机制也被称为滑动窗口控制。
【计算机网络】分层模型(OSI、TCP/IP)、应用协议(SMTP、HTTP、HTTPS)、传输协议(UDP、TCP)、网络协议(IP、DNS)、数据链路层协议_第23张图片
  高速重发控制 如下图所示。当某一报文段丢失后,发送端会一直收到序号为1001的确认应答,这个确认应答好像在提醒发送端“我想接收的是从1001开始的数据”。因此,在窗口比较大,又出现报文段丢失的情况下,同一个序号的确认应答将会被重复不断地返回。而发送端主机如果连续3次收到同一个确认应答、就会将其所对应的数据进行重发。这种机制比之前提到的超时管理更加高效,因此也被称作高速重发控制。
【计算机网络】分层模型(OSI、TCP/IP)、应用协议(SMTP、HTTP、HTTPS)、传输协议(UDP、TCP)、网络协议(IP、DNS)、数据链路层协议_第24张图片
  流控制 TCP提供一种机制可以让发送端根据接收端的实际接收能力控制发送的数据量。这就是所谓的流控制。TCP首部中,专门有一个字段用来通知窗口大小。接收主机将自己可以接收的缓冲区大小放入这个字段中通知给发送端。这个字段的值越大,说明网络的吞吐量越高。

(6)拥塞控制

  有了 TCP的窗口控制,收发主机之间即使不再以一个数据段为单位发送确认应答,也能够连续发送大量数据包。然而,如果在通信刚开始时就发送大量数据,也可能会引发其他问题。
  一般来说,计算机网络都处在一个共享的环境。因此也有可能会因为其他主机之间的通信使得网络拥堵。在网络出现拥堵时,如果突然发送一个较大量的数据,极有可能会导致整个网络的瘫痪。TCP为了防止该问题的出现,在通信一开始时就会通过一个叫做慢启动的算法得出的数值,对发送数据量进行控制。
【计算机网络】分层模型(OSI、TCP/IP)、应用协议(SMTP、HTTP、HTTPS)、传输协议(UDP、TCP)、网络协议(IP、DNS)、数据链路层协议_第25张图片

四、网络层协议IP

1.什么是IP

  IP相当于网络层,IP也就是网际协议。
  网络层的下一层一数据链路层的主要作用是在互连同一种数据链路的节点之间进行包传递。而一旦跨越多种数据链路,就需要借助网络层。网络层可以跨越不同的数据链路,即使是在不同的数据链路上也能实现两端节点之间的数据包传输。
  网络层与数据链路层的关系:
  仔细分析一下机票和火车票,不难发现,每张票只能够在某一限定区间内移动。此处的“区间内”就如同通信网络上的数据链路。而这个区间内的出发地点和目的地点就如同某一个数据链路的源地址和目标地址等首部信息。整个全程的行程表的作用就相当于网络层。
  如果我们只有行程表而没有车票,就无法搭乘交通工具到达目的地。反之,如果除了车票其他什么都没有,恐怕也很难到达目的地。因为你不知道该坐什么车,也不知道该在哪里换乘。因此,只有两者兼备,既有某个区间的车票又有整
个旅行的行程表,才能保证到达目的地。与之类似,计算机网络中也需要数据链路层和网络层这个分层才能实现向最终目标地址的通信。
  IP大致分成三大作用模块:IP寻址、路由(最终节点为止的转发)、IP分包与组包。

2.IP第一作用模块:IP地址(网络层地址)

  在物理层或数据链路层数据包转发设备中,不需要设置IP地址,因为这些设备只需要将IP包转化成0、1比特流转发,或对数据链路帧的数据部分进行转发,而不需要应对IP协议。

(1)IP地址的基本思路

  宽带基本上是家家户户都有,通过了向营运商付费,我们获得了宽带的使用权,然而这只是表面现象,实际上使用者是拥有了一个接入互联网的资格和凭证,计算机正是通过这种凭证获得了向互联网共享资源的权限,这个权限就是依赖IP,换言之,通过购买宽带,获得了IP。
  内网IP: 顾名思义,就是在内网中使用的ip地址,什么是内网,一个路由器下的电脑都处在一个内网中,也称之为局域网,内网ip是可以重复的,因为局域网可以有很多个,当然出了这个局域网,就无法访问这个内网ip了。
  公网IP: 这个ip的功能很强大,他是互联网中唯一的地址,不会出现重复的情况,并且可以被互联网中其他的电脑直接访问到,所以一般作为服务器的电脑,我们都要保证这台电脑有一个公网ip,这样才能更好的给外网用户提供服务。

(2)IP地址的结构与分类

  A类 IP地址是首位以“0”开头的地址。从第1位到第8位是它的网络标识。用十进制表示的话,0.0.0.0~ 127.0.0.0是A类的网络地址。A类地址的后24位相当于主机标识。因此,一个网段内可容纳的主机地址上限为16 , 777 , 214个。

【计算机网络】分层模型(OSI、TCP/IP)、应用协议(SMTP、HTTP、HTTPS)、传输协议(UDP、TCP)、网络协议(IP、DNS)、数据链路层协议_第26张图片

  B类 IP地址是前两位为“10”的地址。从第1位到第16位是它的网络标识。用十进制表示的话,128.0.0.1~191.255.0.0是B类的网络地址。B类地址的后16位相当于主机标识。因此,一个网段内可容纳的主机地址上限为65534个。

【计算机网络】分层模型(OSI、TCP/IP)、应用协议(SMTP、HTTP、HTTPS)、传输协议(UDP、TCP)、网络协议(IP、DNS)、数据链路层协议_第27张图片

  C类 IP地址是前三位为“110”的地址。从第1位到第24位是它的网络标识。用十进制表示的话,192.168.0.0 ~ 239. 255.255.0是C类的网络地址。C类地址的后8位相当于主机标识。因此,一个网段内可容纳的主机地址上限为254个。

【计算机网络】分层模型(OSI、TCP/IP)、应用协议(SMTP、HTTP、HTTPS)、传输协议(UDP、TCP)、网络协议(IP、DNS)、数据链路层协议_第28张图片

  D类 IP地址是前四位为“1110”的地址。从第1位到第32位是它的网络标识。用十进制表示的话,224.0.0.0 - 239.255.255.255是D类的网络地址。D类地址没有主机标识,常被用于 多播

【计算机网络】分层模型(OSI、TCP/IP)、应用协议(SMTP、HTTP、HTTPS)、传输协议(UDP、TCP)、网络协议(IP、DNS)、数据链路层协议_第29张图片

  注意:
  在分配IP地址时关于主机标识有一点需要注意。即要用比特位表示主机地址时,不可以全部为0或全部为1。因为 全部为只有0在表示对应的网络地址或IP地址不可获知的情况下才使用 。而 全部为1的主机地址通常作为广播地址。 因此,在分配过程中,应该去掉这两种情况。这也是为什么C类地址每个网段最多只能有254 (28- 2 = 254)个主机地址的原因。

(3)网络通信时,域名和IP地址并用的理由

  • 为什么不只使用IP地址?:可以工作,但难以记忆。
  • 为什么不只使用服务器名字(域名)?:域名太长,处理起来更麻烦。

  现在我们使用的方案是让人来使用名称,让路由器来使用 IP 地 址。为了填补两者之间的障碍,需要有一个机制能够通过名称来查询 IP 地 址,或者通过 IP 地址来查询名称,这样就能够在人和机器双方都不做出牺牲的前提下完美地解决问题。这个机制就是 DNS(Domain Name System,域名系统)。

(4)网络层数据传播方式:根据接收端数量分类

  • 单播: 一对一通信。
  • 广播:与一定范围内连接的所有对象进行通信。
  • 多播: 一对多通信。
  • 任播: 任播是指在特定的多台主机中选出一台作为接收端的一种通信方式,会从目标主机群中选择一台最符合网络条件的主机作为目标主机发送消息。

  广播与多播:

  • 广播:不可以穿透路由(路由不会转发数据包),而且会给链路中的所有端发送(接不接看他们),可能会给某些不想接收的终端浪费额外的流量。
  • 多播:可以穿透路由,又可以只给那些必要的组发送数据包。

(5)子网掩码

  现在,一个IP地址的网络标识和主机标识已不再受限于该地址的类别,而是由一个叫做“子网掩码”的识别码通过子网网络地址细分岀比A类、B类、C类更小粒度的网络。这种方式实际上就是将原来A类、B类、C类等分类中的主机地址部分用作子网地址,可以将原网络分为多个物理网络的一种机制。

3.IP第二作用模块:路由控制

  路由控制是指将分组数据发送到最终目标地址的功能。即使网络非常复杂,也可以通过路由控制确定到达目标地址的通路。一旦这个路由控制的运行出现异常,分组数据极有可能“迷失”,无法到达目标地址。因此,一个数据包之所以能够成功地到达最终的目标地址,全靠路由控制。
  可以将旅行者看做IP数据包,将车站和工作人员看做路由器。当某个IP包到达路由器时,路由器首先査找其目标地址,从而再决定下一步应该将这个包发往哪个路由器,然后将包发送过去。当这个IP包到达那个路由器以后,会再次经历査找下一目标地址的过程,并由该路由器转发给下一个被找到的路由器。这个过程可能会反复多次,直到找到最终的目标地址将数据包发送给这个节点。
  为了将数据在发给目标主机,所有主机都维护着一张路由控制表,该表记录IP数据在下一步应该发给哪个路由器。IP包将根据这个路由表在各个数据链路上传输。

4.IP第三作用模块:IP分包与组包

  IP面向无连接,采用分组交换模式。

(1)面向有连接型与面向无连接型

【计算机网络】分层模型(OSI、TCP/IP)、应用协议(SMTP、HTTP、HTTPS)、传输协议(UDP、TCP)、网络协议(IP、DNS)、数据链路层协议_第30张图片
  面向有连接更加安全,但更麻烦;面向无连接更简单,但是没那么安全。

(2)电路交换和分组交换

  电路交换:
  一台计算机在收发信息时会独占整个电路,其他计算机只能等待这台计算机处理结束以后才有机会使用这条电路收发数据。并且在此过程中,谁也无法预测某一台计算机的数据传输从何时开始又在何时结束。如果并发用户数超过交换机之间的通信线路数,就意味着通信根本无法实现。
【计算机网络】分层模型(OSI、TCP/IP)、应用协议(SMTP、HTTP、HTTPS)、传输协议(UDP、TCP)、网络协议(IP、DNS)、数据链路层协议_第31张图片
  分组交换:
  分组交换是指将大数据分割为一个个叫做包(Packet)的较小单位进行传输的方法。这里所说的包,如同我们平常在邮局里见到的邮包。分组交换就是将大数据分装为一个个这样的邮包交给对方。
【计算机网络】分层模型(OSI、TCP/IP)、应用协议(SMTP、HTTP、HTTPS)、传输协议(UDP、TCP)、网络协议(IP、DNS)、数据链路层协议_第32张图片
  计算机通信会在每一个分组中附加上发送端地址、接收端地址、分组序号,这部分统称为“报文首部”。

5.IPv6和IPv4的区别

  • 地址空间不同,IPv4中规定IP地址长度为32,而IPv6中IP地址的长度为128。
  • 路由表大小不同,IPv6的路由表相比IPv4的更小。
  • IPv6的组播支持以及对流的支持要强于IPv4。
  • 安全性不同,IPv6的安全性更高,在使用IPv6的网络时,用户可对网络层的数据进行加密。
  • 协议扩充不同,IPv6允许协议进行扩充而IPv4不允许。

6.IPv4首部

  通过IP进行通信时,需要在敏据的前面加入IP首部信息。IP首部中包含着用于IP协议进行发包控制时所有的必要信息。

7.DNS

  仅靠IP地址是无法通信的,因为人习惯于使用应用层的地址(比如域名),IP服务于更底层,最底层也不适用IP地址而是MAC地址,因此,仅凭IP远远不够。

  向DNS服务器查询IP
  向 DNS 服务器发出查询,也就是向 DNS 服务器发送查询消息,并接收服务器返回的响应消息。换句话说,对于 DNS 服务器,我们的计算机上一定有相应的 DNS 客户端,而相当于 DNS 客户端的部分称为 DNS 解析器,或者简称解析器。通过 DNS 查询 IP 地址的操作称为域名解析,因此负责执行解析(resolution)这一操作的就叫解析器(resolver)了。
  解析器实际上是一段程序,具体来说,在编写浏览器等应用程序的时候,只要像下图这样写上解析器的程序名称“gethostbyname”以及 Web 服务器的域名“www.lab.glasscom.com”就可以了,这样就完成了对解析器的调用。
【计算机网络】分层模型(OSI、TCP/IP)、应用协议(SMTP、HTTP、HTTPS)、传输协议(UDP、TCP)、网络协议(IP、DNS)、数据链路层协议_第33张图片
  调用解析器后,解析器会向 DNS 服务器发送查询消息,然后 DNS 服务器会返回响应消息。响应消息中包含查询到的 IP 地址,解析器会取出 IP地址,并将其写入浏览器指定的内存地址中。

五、数据链路层协议

0.MAC地址

(1)什么是MAC地址

  MAC地址也叫物理地址、硬件地址或链路地址,由网络设备制造商生产时写在硬件内部。与网络无关,无论将带有这个地址的硬件接入到网络的何处,都有相同的MAC地址,它由厂商决定。MAC地址是全球唯一的。

(2)MAC地址的作用

  由于IP只是逻辑上标识,任何人都随意修改,因此不能用来标识用户;而 MAC地址则不然,它是固化在网卡里面的。从理论上讲,除非盗来硬件(网卡),否则是没有办法冒名顶替的。
  基于MAC地址的这种特点,局域网采用了用MAC地址来标识具体用户的方法。注意:具体实现:在交换机内部通过“表”的方式把MAC地址和IP地址一一对应,也就是所说的IP、MAC绑定。

(3)具体的通信方式

  接收过程,当有发给本地局域网内一台主机的数据包时,交换机接收下来,然后把数据包中的IP地址按照“表”中的对应关系映射成MAC地址,转发到对应的MAC地址的主机上,这样一来,即使某台主机盗用了这个IP地址,但由于他没有这个MAC地址,因此也不会收到数据包。
  只有IP而没有对应的MAC地址在这种局域网内是不能上网的,于是解决了IP盗用问题。

(4)例外情况:MAC地址不一定是唯一的

  在全世界,MAC地址也并不总是唯一的。实际上,即使MAC地址相同,只要不是同属一个数据链路就不会出现问题。例如,人们可以在微机板上自由设置自己的MAC地址。再例如,一台主机上如果启动多个虚拟机,由于没有硬件的网卡只能由虚拟软件自己设定MAC地址给多个虚拟网卡,这时就很难保证所生成的MAC地址是独一无二的了。
  但是,无论哪个协议成员通信设备,设计前据都是MAC地址的唯一性。这也可以说是网络•世界的基本准则。

(5)根据MAC地址识别厂商

  有一种设备叫网络分析器。它可以分析出局城网中的包是由哪个厂商的网卡发出的。它通过读取数据帧当中发送MAC地址里的厂商识别码进行识别。由于能够迅速定位是否有未知厂商识别码的网卡发送异常的包,这一功能在由多个厂商的设备构成的网络环境中,对于分析问题极为有效。

1.数据链路分类

  • 以太网(局域网LAN):是当今现有局域网采用的最通用的通信协议标准。该标准定义了在局域网中采用的电缆类型和信号处理方法。
  • 无线通信(WLAN):无线通信通常使用电磁波、红外线、激光等方式进行传播数据。一般在办公室的局域网范围内组成的较高速的连接称为无线局域网。
  • PPP(端对端/点对点)

2.其他链路

  • ATM
  • POS
  • ……

3.公共网络

……

你可能感兴趣的:(Java后端开发校招)