第一章:网络基础知识
协议
协议就是计算机与计算机之间通过网络实现通信时事先达成的一种“约定”。这种“约定”使那 些由不同厂商的设备、不同的CPU以及不同的操作系统组成的计算机之间,只要遵循相同的协议就能够实现通信。反之,如果所使用的协议不同,就无法实现通信。这就好比两个人使用不同国家的语言说话,怎么也 无法相互理解。协议可以分为很多种,每一种协议都明确地界定了它的行为规范。两台计算机之间必须能够 支持相同的协议,并遵循相同协议进行处理,这样才能实现相互通信。
分组交换协议
分组交换是指将大数据分割为一个个叫做包(Packet)的较小单位进行传输的方法。
计算机通信也会在每一个分组中附加上源主机地址和目标主机地址送给通信线路。这些发送端地址、接收端地址以及分组序号写入的部分称为“报文首部”。
在这一模型中,每个分层都接收由它下一层所提供的特定服务,并且负责为自己的上一层提供特定的服 务。上下层之间进行交互时所遵循的约定叫做“接口”。同一层之间的交互所遵循的约定叫做“协议”。
OSI七层模型
传输方式的分类
面向有连接型与面向无连接型
面向有连接型包括ATM、帧中继、TCP等协议。
面向无连接型包括以太网、IP、 UDP等协议。
电路交换与分组交换
电路交换:建立好连接以后,用户就可以一直使用这条电路,直到该连接被断开为止。独占线路进行数据传输。如果并发用户数超过交换机之间的通信线路数,就意味着通信根本无法实现。
分组交换:即让连接到通信电路的计算机将所要发送的数据分成多个数据包,按 照一定的顺序排列之后分别发送。这就是分组交换。 所有的计算机就可以一 齐收发数据,这样也就提高了通信线路的利用率。由
电路交换和分组交换有什么区别?_帅地-CSDN博客_电路交换和分组交换的区别
根据接收端数量分类
单播:一对一
广播:将消息从1台主机发送给与之相连的所有其他主机,一对多。
多播:多播与广播类似,也是将消息发给多个接收主机。不同之处在于多播要限定某一组主机作为接收端。
广播多播区别:
多播与广播原理分析及区别_h490516509的博客-CSDN博客_广播的原理
- 播数据报的接收是主动的。主机主动加入指定的多播组,才会接收该组的多播数据报。
- 采用多播方式可以只把数据报发送给对数据报感兴趣的主机。
任播:在特定的多台主机中选出一台作为接收端的一种通信方式。
地址
MAC地址
网卡。MAC地址是真正负责最终通信的地址。
IP地址
IP地址由网络号和主机号两部分组成
MAC寻址中所参考的这 张表叫做地址转发表,而IP寻址中所参考的叫做路由控制表
物理层:中继器,集线器
数据链路层:网桥,交换机
网络层:路由器
第二章:TCP/IP基础知识
数据包首部
包、帧、数据报、段、消息 以上五个述语都用来表述数据的单位。
大致区分如下: 包可以说是全能性述语。帧用于表示数据链路层中包的单位。而数据包是IP和UDP等网络层以上的分层中包的单位。段则表示TCP数据流中的信息。最后,消息是指应用协议中数据的单位。
第三章:数据链路层
MAC地址
MAC地址用于识别数据链路中互连的节点
在使用网卡(NIC)的情况下,MAC地址一般会被烧入到ROM 中。因此,任何一个网卡的MAC地址都是唯一的,在全世界都不会有重复
共享介质型网络
共享介质型网络中有两种介质访问控制方式:一种是争用方式,另一种是令牌传递方式。
争用方式(Contention)是指争夺获取数据传输的权力,也叫CSMA(载波监听多路访问)。这种方法 通常令网络中的各个站(数据链路中很多情况下称节点为“站”。) 采用先到先得的方式占用信道发送数据,如果多个站同时发送帧,则会产生冲突现象。也因此会导致网络拥堵与性能下降。
CSMA/CD
CSMA/CD要求每个站提前检查冲突,一旦发生冲突,则尽早 释放信道。其具体工作原理如下:
如果载波信道上没有数据流动,则任何站都可以发送数据。 检查是否会发生冲突。一旦发生冲突时,放弃发送数据(实际上会发送一个32位特别的信号,在阻塞报 文以后再停止发送。接收端通过发生冲突时帧的FCS(参考3.3.4节),判断出该帧不正确从而丢弃 帧。) ,同时立即释放载波信道。 放弃发送以后,随机延时一段时间,再重新争用介质,重新发送帧。
令牌传递方式
只有获得令牌的站才能发送数据。这种方式有两个特点:一是不会有冲突,二是每个站都有通过平等循环获得令牌的机会。 因此,即使网络拥堵也不会导致性能下降。
根据MAC地址转发
交换集线器也叫做以太网交换机。
以太网交换机就是持有多个端口 的网桥。
它们根据数据链路层中每个帧的目标MAC地址,决定从哪个网络 接口发送数据。这时所参考的、用以记录发送接口的表就叫做转发表
环路检测技术
生成树方法
源路由法
以太网
采用多台终端使用同一根同轴电缆的共享介质型
以太网帧前端有一个叫做前导码(Preamble)的部分,它由0、1数字交替组合而成,表示一个以太网帧 的开始,也是对端网卡能够确保与其同步的标志。前导码末尾是一个叫做SFD(Start Frame Delimiter)的域,它的值是“11”。在这个域之后就是以太网帧的本体。
PPP
PPP(Point-to-Point Protocol)是指点对点,即1对1连接计算机的协议。PPP相当于位于OSI参考模型第2 层的数据链路层。
PPP属于纯粹的数据链路层,与物理层没有任何关系。换句话说,仅有PPP无法实现通信,还需要有物理层 的支持。
在开始进行数据传输前,要先建立一个PPP级的连接。
在PPP的主要功能中包括两个协议:一个是不依赖上层的LCP协议(Link Control Protocol),另一个是 依赖上层的NCP协议(Network Control Protocol)。如果上层为IP,此时的NCP也叫做IPCP。
LCP主要负责建立和断开连接、设置最大接收单元(MRU,Maximum Receive Unit)、设置验证协议 (PAP或CHAP)以及设置是否进行通信质量的监控。 而IPCP则负责IP地址设置以及是否进行TCP/IP首部压缩等设备
PPP数据帧格式
VPN
虚拟专用网络(VPN)用于连接距离较远的地域。这种服务包括IP-VPN和广域以太网。
第4章:IP协议
IP(IPv4、IPv6)相当于OSI参考模型中的第3层——网络层。
主机的定义应该是指“配置有IP地址,但是不进行路由控制的设备”。
既配有IP地址又具有路 由控制能力的设备叫做“路由器”
IP地址
MAC地址正是用来标识同一个链路中不同计算机的一种识别码。
IP地址用于在“连接到网络中的所有主机中识 别出进行通信的目标地址”。
IP地址的定义
那就是将32位的IP地址以每8位为一组, 分成4组,每组以“.”隔开,再将每组数转换为十进制数
IP地址由网络和主机两部分标识组成
IP地址的分类
■ A类地址 A类IP地址是首位以“0”开头的地址。从第1位到第8位(去掉分类位剩下7位。) 是它的网络标识。用十进制表示的话,0.0.0.0~127.0.0.0是A类的网络地址。A类地址的后24位相当于主机标识。因此,一个网段内可容纳的主机地址上限为16,777,214个。
■ B类地址 B类IP地址是前两位为“10”的地址。从第1位到第16位(去掉分类位剩下14位。) 是它的网络标识。用十进制表示的话,128.0.0.1~191.255.0.0是B类的网络地址。B类地址的后16位相当于主机标识。因此,一个 网段内可容纳的主机地址上限为65,534个。
■ C类地址 C类IP地址是前三位为“110”的地址。从第1位到第24位(去掉分类位剩下21位。) 是它的网络标识。用十进制表示的话,192.168.0.0~239.255.255.0是C类的网络地址。C类地址的后8位相当于主机标识。因此, 一个网段内可容纳的主机地址上限为254个。
■ D类地址 D类IP地址是前四位为“1110”的地址。从第1位到第32位(去掉分类位剩下28位) 是它的网络标识。 用十进制表示的话,224.0.0.0~239.255.255.255是D类的网络地址。D类地址没有主机标识,常被用于多播。
使用比特位表示主机地址时,不可以全部为0或全部 为1。因为全部为只有0在表示对应的网络地址或IP地址不可获知的情况下才使用。 而全部为1的主机地址通常作为广播地址。
即全为0为网络地址,全为1为广播地址。
广播地址
将IP地址中的主机地址部分全部设置为1,就成为了广播地址。
本地广播:在本网络内的广播叫做本地广播。
直接广播:在不同网络之间的广播叫做直接广播。
路由控制
IP数据包的传输亦是如此。可以将旅行者看做IP数据包,将车站和工作人员看做路由器。当某个IP包到 达路由器时,路由器首先查找其目标地址(IP包被转发到途中的某个路由器时,实际上是装入数据链路层的 数据帧以后再被送出。以以太网为例,目标MAC地址就是下一个路由器的MAC地址。) ,从而再决定下一步应该将这个包发往哪个路由器,然后将包发送过去。当这 个IP包到达那个路由器以后,会再次经历查找下一目标地址的过程,并由该路由器转发给下一个被找到的路 由器。这个过程可能会反复多次,直到找到最终的目标地址将数据包发送给这个节点。
路由控制表的形成方式有两种:一种是管理员手动设置,另一种是路由器与其他路由器相互交换信息 时自动刷新。前者也叫静态路由控制,而后者叫做动态路由控制。
IP地址的网络地址部分用于进行路由控制。
路由控制表中记录着网络地址与下一步应该发送至路由器的地址 。在发送IP包时,首先要确定IP包首部中的目标地址,再从路由控制表中找到与该地址具有相同网络地址的记录,根据该记录将IP包转发给相应的下一个路由器。如果路由控制表中存在多条相同网络地址的记录,就选择一个最为吻合的网络地址。所谓最为吻合是指相同位数最多的意 思(也叫最长匹配。) 。
IP属于面向无连接型
IP面向无连接。即在发包之前,不需要建立与对端目标地址之间的连接。上层如果遇到需要发送给IP的 数据,该数据会立即被压缩成IP包发送出去。、
即使对端主机关机或不存在,数据包还是会被发送出去。反之,对于一台 主机来说,它会何时从哪里收到数据也是不得而知的。通常应该进行网络监控,让主机只接收发给自己的数 据包。若没有做好准备很有可能会错过一些该收的包。因此,在面向无连接的方式下可能会有很多冗余的通 信。
子网掩码
A类地址前8位(除首 位“0”还有7位)、B类地址前16位(除首位“10”还有14位)、C类地址前24位(除首位“110”还有21位)分别 是它们各自的网络标识部分。
直接使用A类或B类地址,有些浪费。人们已经开始一种新的组合 方式以减少这种浪费。
引入了子网以后,一个IP地址就有了两种识别码。一是IP地址本身,另一个是表示网络部的子网掩 码。子网掩码用二进制方式表示的话,也是一个32位的数字。它对应IP地址网络标识部分的位全部为“1”, 对应IP地址主机标识的部分则全部为“0”。
表示方式1:
表示方式2:
IPv6
IPv6(IP version 6)是为了根本解决IPv4地址耗尽的问题而被标准化的网际协议。I
IPv4的地址长度为4个 8位字节,即32比特。而IPv6的地址长度则是原来的4倍,即128比特
IPv4首部
IPv6首部
第5章:IP协议相关技术
在访问Web站点和发送、接收电子邮件时,我们通常会直接输入Web网站的地址或电子邮件地址等那些由应用层提供的地址,而不会使用由十进制数字组成的某个IP地址。因此,为了能让主机根据实际的IP包进行通信,就有必要实现一种功能——将应用中使用的地址映射为IP地址。
在数据链路层也不使用IP地址。在以太网的情况下只使用MAC地址传输数据包。而实际上将众 多IP数据包在网络上进行传送的就是数据链路本身,因此,必须了解发送端MAC地址。如果不知道MAC地 址,那么通信也就无从谈起。
DNS(由域名查IP地址)
DNS系统维护一个用来表示组织内部主机 名和IP地址之间对应关系的数据库。
由域名找到对应的IP地址。
在应用中,当用户输入主机名(域名)时,DNS会自动检索那个注册了主机名和IP地址的数据库,并迅 速定位对应的IP地址(Windows和Unix中若想查找域名对应的IP地址,常用nslookup命令。输入“ns-lookup 主机名”时会返回对应的IP地址。) 。而且,如果主机名和IP地址需要进行变更时,也只需要在组织机构 内部进行处理即可,而没必要再向其他机构进行申请或报告。
DNS查询
解析器(进行DNS查询的主机和软件)为了调查IP地址,向域名服务器进行查询处理。接收这个查询请求的域名服务器首先会在自己的数据库进行查找。 如果有该域名所对应的IP地址就返回。如果没有,则域名服务器再向上一层根域名服务器进行查询处理。因此,如图所示,从根开始对这棵树按照顺序进行遍历,直到找到指定的域名服务器,并由这个域名服务器返 回想要的数据。即从下到上向根域名服务器查询。
ARP(找到MAC地址)
ARP是一种解决地址问题的协议。以目标IP地址为线索,用来定位下一个应该接收数据分包的网络设备对应的MAC地址。如果目标主机不在同一个链路上时,可以通过ARP 查找下一跳路由器的MAC地址。不过ARP只适用于IPv4,不能用于IPv6。IPv6中可以用ICMPv6替代ARP发 送邻居探索消息。
根据ARP可以动态地进行地址解析,因此,在TCP/IP的网络构造和网络通信中无需事先知道MAC地址 究竟是什么,只要有IP地址即可。
ARP缓存表
把第一次通过ARP获取到的MAC地址作为IP对MAC的映射关系记忆(记录IP地址与MAC地址对应关系的数据库叫做ARP表) 到一个ARP缓存表中,下一次再向这个IP地址发送数据报时不需再重新发送ARP请求,而是直接使用这个缓存表当中的MAC地址进行数据报的发送。
IP地址和MAC地址缺一不可?
个人理解:若从主机a通过主机b发给主机c,若只知道c的MAC地址,无法发送成功。因为必须要先发送给主机b的MAC地址。。
RARP(从MAC地址定位IP地址)
ICMP(确认IP包是否成功送达目标地址)
ICMP的消息大致可以分为两类:一类是通知出错原因的错误消息,另一类是用于诊断的查询消息。
第6章:TCP与UDP
传输层的TCP和UDP,为了识别自己所传输的数据部分究竟应该发给哪个应用,也设定了这样一 个编号(即端口号)。
根据端口号就可以识别在传输层上一层的应用层中所要进行处理的具体程序(一个程序可以使用多个端口) 。
传输协议TCP、UDP通过接收数据中的目标端口号识别目标处理程序。
客户端是请求的发起端。
服务端是请求的处理端。
另外,作为服务端的程序有必要提前启动,准备接收客户端的请求。否则即使有客户端的请求 发过来,也无法做到相应的处理。
TCP
TCP是面向连接的、可靠的流协议。
TCP用于在传输层有必要实现可靠传输的情况。
TCP能进行拥塞控制,能对丢包的重发,能对乱序进行纠正。
TCP作为一种面向有连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。
根据TCP的这些机制,在IP这种无连接的网络上也能够实现高可靠性的通信。
UDP
UDP是不具有可靠性的数据报协议。
UDP主要用于那些对高速传输和实时性有较高要求的通信或广播通信。
UDP无法进行拥塞控制,无法进行对丢包的重发,对乱序无法纠正。
例子:微信视频采用UDP。通话中若有部分数据丢失,也只是会影响某一小部分的通话,比如卡顿。
套接字(socket)
应用程序利用套接字,可以设置对端的IP地址、端口号,并实现数据的发送与接收。
端口号
端 口号用来识别同一台计算机中进行通信的不同应用程序。因此,它也被称为程序地址。
一台计算机上同时可以运行多个程序。传输层协议正是利用这些端口号识别本机中正在进行通信的应用程序,并准确地将数据传输。
通过IP地址、端口号、协议号进行通信识别
TCP/IP或UDP/IP通信中通常采用5个信息来识别一个通信。它们是“源IP地址”、“目标IP地址”、“协议号”、“源端口号”、“目标端口号”。只要其中某一项不同,则被认为是其他通信。
端口号如何确定
标准既定的端口号 :如MySQL端口号3306。取值范围1024到49151的数字之间
时序分配法 服务端有必要确定监听端口号,但是接受服务的客户端没必要确定端口号。客户端应用程序可以完全不用自己设置端口号,而全权交给操作系统进行分配。
端口号取值范围在49152到65535之间
端口号与协议
不同的传输协议可以使用相同的端口号。
TCP与UDP 使用同一个端口号,但使用目的各不相同。这是因为端口号上的处理是根据每个传输协议的不同而进行的。