【网络协议突击指南01】前言和网络基础知识
恶补前的疑问
作为技术人员,平时是会经常接触网络的,也常会听到一些诸如:TCP、UDP、IP、MAC之类的词(这些常用的肯定是知道大概意思的)
我是非科班出身,没有系统学习过计算机网络组成或者原理,在认识上很难对这些松散的知识有整体的一个认识。因此时常处于"知其然不知其所以然"的状态。
于是便将自己想的一些问题罗列出来作为恶补知识的目标,以上便是前言
下面列出关心的问题【可能会有一些想当然的问题,不过没关系,我会继续学】
0、网络的构成
网络是怎么构成的?为什么通过几个协议就可以定义网络?
1、什么是网络协议?
网络协议的定义?网络协议在网络的构建中的角色是什么?
2、网络协议分类和作用
网络协议分为哪些?分别对应于七层模型的哪些层?具体的作用是什么?
3、网络协议与网络流量的关系
不同网络协议对于网络流量的影响是只体现在比如数据段的构成不同上吗?还是干脆整个数据包的结构都有区别?
这些是我目前想知道的关于网络协议的问题,之后会回来解答
总的来说,恶补是基于《图解http 第五版》进行的,每个章节的内容会以总结和讨论的方式记录,其中也会有对于网上一些优秀解答的引用(我会标注),那么开始吧
第一章 网络基础知识
网络是如何出现的?
这与计算机的发展密不可分。总结为以下阶段
批处理时代---单机使用,设备昂贵;
分时系统时代---多个终端同时连一台计算机,一机可供多人使用;(计算机之间虽然也连接,但无法通信)
计算机间通信---计算机之间通过通信线路连接实现数据交换;
计算机网络---通过路由器等设施构建的计算机之间的通信网;
互联网---不同厂商的计算机之间建立的一个成本更低的网络环境;
IP(Internet Protocol)网---以协议为支撑的网络,取代过去由电话网支持的通信网络;
什么是协议?
先说在前,TCP/IP指的是一种网络体系结构(协议集合),其中包含着许多种类的协议
TCP/IP包含:
IP,ICMP,TCP,UDP,HTTP,TELNET,SNMP,SMTP...
因此,我之前会想:“是先学TCP/IP还是先学HTTP”这种想法就是多余的了,因为TCP/IP包含有HTTP。
回到正题,什么是协议
感性理解
《图解TCP/IP》中所举的例子就很形象
协议可以理解为我们使用的语言,不同的人说不同的语言,但只有说相同语言的人才能进行沟通。(可以理解为通信)
但这只是一个有助于理解的例子,实际情况还是有不同的。
人类在使用语言交流时,可以借助表情、语气等修正自己所要表达的语义。显然计算机没有达到这种智能程度。
因此,计算机中的协议必须是充分考虑通信过程中可能遇到的各种异常之后再制定的。因此遵循相同协议的计算机之间自然可以进行通信。
分组交换协议
分组交换指将大数据分割为一个一个的小块,称为包(Packet),分组交换就是将大数据分装在多个包中交给对方的过程
协议的标准化
为了统一不同厂商间所使用的协议,简化通信成本
【严格定义:标准化是指不同厂商所生产的易购产品之间具有兼容性以及便于使用的规范化过程】
ISO指定了国际标准OSI(开放式通信系统互联参考模型)
很不幸,OSI作为一个标准,其中的很多协议至今都没有普及,但是作为OSI指导方针的OSI参考模型(七层模型),却常被用于制定网络协议
OSI协议和OSI参考模型不是一回事
协议分层
OSI参考模型将通信协议中的必要功能分成7层以简化一些复杂的网络协议。
每个分层都接受由它下一层提供的特定服务,并负责为自己的上一层提供特定服务。
上下层之间进行交互时所遵循的约定称为"接口";
同一层之间的交互所遵循的约定叫"协议";
还是用之前"对话语言"的例子拓展一下
若A、B两人使用同种语言交流通过电话交流,表面上看他们是直接对话,但实际上A与B都只是通过电话机的听筒听取声音,都是对着麦克风说话。
在这个场景中,他们使用的语言协议作为麦克风的音频输入,在通信设备层被转换为电信号传出去。传到对方的电话机后,又被通信设备层转换为音频输出。A与B实际上是利用电话机之间的"音频转化声音"接口实现的对话。
上述过程中,
双方使用的"电话机"的协议不同,会影响通话;
若双方同时更换"电话机"为"无线电",不会影响通信;(只需学会无线电方法即可)
若双方同时更换语言为"英语",不会影响通信;(电话机不会受"语言层"的影响)
感受一下协议分层的特点
OSI参考模型中各个分层的作用
============================================
7.应用层
针对特定应用的协议【例如电子邮件、文件传输等】
============================================
6.表示层
设备固有数据格式和网络标准数据格式的转换
【接收文字流、图像、声音等】
实际应用中用于保证异构机型之间的数据一致性
例如:从网易邮箱发往QQ邮箱的数据,在表示层中转换为各自软件的专属数据格式,而在表示层之下则使用统一的网络数据格式进行传输
============================================
5.会话层
通信管理。负责建立和断开通信连接,是数据流动的逻辑通路。管理传输层以下的分层【何时建立\断开连接,连多久】
还是用发邮件举例,该层决定邮件应该怎么发,在其收到的数据前端附加首部或标签信息,这些部分记录着数据传送顺序的信息
============================================
===========以下层负责具体数据的传输=============
4.传输层
管理两个节点(互联的网络终端设备)之间的数据传输,负责传输的可靠性,确保数据传送至目的地
【判断数据是否有丢失】
若传输过程中出现异常导致目的机器未收到数据,目的机器会再次询问发送方,发送方会将剩余部分重新发送并再次确认是否送达。
=================↑=协作=↓===================
3.网络层
地址管理和路由选择【选择经过哪个路由传递到目标地址】
实际将数据从A送到B
============================================
2.数据链路层
互联设备之间传送和识别数据帧【数据帧与比特流(如0101)之间的转换,数->比->数】
通过传输介质互联的设备,进行数据处理
============================================
1.物理层
以0、1代表高低电平和灯光的亮灭,界定连接器和网线的规格【比特流与电子信号(模拟信号)之间的切换,比->电->比】
直连设备之间采用地址实现传输,这种地址称为MAC地址,目的是为了识别连接到同一个传输介质上的设备。
补充知识:路由
https://zhuanlan.zhihu.com/p/149243461
路由是指路由器从一个接口上收到数据包,根据数据包的目的地址进行定向并转发到另一个接口的过程。
简单来说,路由器主要维护的是一个映射表, 映射表会决定数据的流向;
传输方式分类
电路交换
交换机主要负责数据中转处理
交换机1---交换机2---交换机3 【通信电路】
=========================
主机A 主机B
问题:一台计算机在收发信息时会独占线路,其他计算机只能等待。
分组交换
分组交换机(路由器,也叫3层交换机)负责连接通信线路
发送端计算机将数据分组发送给路由器,路由器接收到分组数据并缓存后发送给目标。顺序是先进先出
问题:由于线路中传输速度的不同,可能出现拥堵、阻塞甚至分组数据丢失的情况