学习目标:《图解TCP/IP》精简笔记
学习内容:
一、计算机网络背景
1、广域网与局域网;
2、OSI开放式通信系统互联参考模型:
<1>应用层:为应用程序提供服务并规定应用程序中通信相关的细节。针对特定应用的协议,电子邮件协议,远程登录协议,文件传输协议;
<2>表示层:主要负责格式转换。接受不同表现形式的信息,文字流,图像,声音等。将应用处理的信息转换为适合网络传输的格式,或者将来自下一层的数据转换为上层能够处理的格式;
<3>会话层:负责建立和断开通信连接,以及数据的分割和传输。何时建立连接,何时断开,以及保持多久连接
<4>传输层:可靠传输的作用。是否有数据丢失;
<5>网络层:经过哪个路由传递到目标地址;
<6>数据链路层:数据帧与比特流之间的转换;
(比特流:内容分发协议,它采用高效的软件分发系统和点对点技术共享大体积文件(如一部电影或电视节目),并使每个用户像网络重新分配结点那样提供上传服务。一般的下载服务器为每一个发出下载请求的用户提供下载服务,而BitTorrent的工作方式与之不同。分配器或文件的持有者将文件发送给其中一名用户,再由这名用户转发给其它用户,用户之间相互转发自己所拥有的文件部分,直到每个用户的下载都全部完成。这种方法可以使下载服务器同时处理多个大体积文件的下载请求,而无须占用大量带宽。)
<7>物理层:比特流与电子信号之间的切换;
3、传输方式分类
1)是否需要预先建立连接分类:
面向有连接型:发送数据之前需要在收发主机之间连接一条通信线路,例如电话;
面向无连接型:发送端于任何时候自由发送数据,接收端也永远不知道自己会在何时从哪接受数据,此时接收端需要时常确认是否接受了数据,例如发邮包;
2)交换方式分类
电路交换:交换机主要负责数据的中转处理。计算机首先被连接到交换机上,而交换机与交换机之间则由众多的通信线路再继续连接,计算机之间发生数据时需要先通过交换机与目标主机建立通信电路。
3)分组交换:
<1>为了防止电路交换中,两台计算机独占线路,实现并发交换。连接到通信电路上的计算机所要发送的数据分成多个数据包,按照一定的顺序排列之后分别发送。由于每个数据包都写入了发送端与接收端的地址,所以即使在同一条线路也可以同时为多个用户提供服务。
<2>分组交换中,分组交换机连接通信线路,发送端计算机将数据分组发送给路由器,路由器收到这些分组数据以后缓存到自己的缓冲区的队列中,然后再转发给目标计算机。也叫“蓄积交换”。
<3>由于网络拥堵,路由器可能发生缓存饱和或者溢出,甚至出现分组数据丢失。
4)根据接收端数量分类
<1>单播(Unicast):1对1通信;
<2>广播(Broadcast):对应的能接受到广播的计算机范围成为广播域,如果频段信息;
<3>多播(Multicast):指定特定的一组主机作为接收端,如电视会议;
<4>任播(Anycast):在特定的多台主机中选出一台作为接收端。类似多播在特定的一组主机中任选。在DNS根域名解析服务器中有应用。
4、地址
1)唯一性:一个地址必须明确地表示一个对象;
2)层次性:通过分层树状结构实现快速检索,如电话号码,实际住址。也有无层次的地址,如MAC地址。
3)MAC与IP在标识一个主体时都具有唯一性,但只有IP有层次性;MAC虽然是最终通信的地址,但寻址过程中IP地址必不可少;
4)P地址的分层:
<1>IP地址由网络号和主机号两部分组成;
<2>网络号相同的主机在组织结构,提供商类型和地域分布上都比较集中。
5)网络传输中,每个节点会根据分组数据的地址信息,来判断该报文应该由哪个网卡发送出去。为此,各个地址会参考一个发出接口列表。MAC寻址是地址转发表,IP寻址是路由控制表
5、现代网络
1)核心网:计算机网络中的“高速公路”;使用高速路由器快速传输大量数据。
2)边缘网络:“高速公路”的出入口;常用多功能路由器和3层交换机。
3)接入层(汇聚层):计算机网络中连接边缘网络的部分,常用2层交换机和3层交换机。
4)互联网通信:用户A - 接入层 - 【边缘网络】 - 【主干网】 - 【边缘网络】 - 接入层 - 用户B。有时候在接入层就可以完成通信。
5)移动通信:手机终端A - 基站 - 通信控制中心 - 声音主干网/数据主干网 - 通信控制中心 - 基站 - 手机终端B。
6)信息发布者:信息发布者将信息发布到数据中心,数据中心内部的网络分布着3层交换机和高速路由器。数据中心通常接入主干网或边缘网络可以实现大带宽高速数据传输,以此处理对该信息的大量访问。
6、虚拟化技术与云
1)虚拟化技术:当一个网站需要调整运营所使用的资源时,并不增减服务器,存储设备,网络等实际的物理设备,而是通过软件将这些物理设备虚拟化,在有必要的时候进行增减。以此达到按需分配,按比例分配,对外提供可靠的服务。
2)云:利用虚拟化技术根据使用者的情况动态调整必要资源的机制为“云”。
二、TCP/IP基础知识
1、TCP/IP协议簇:
1)应用层:HTTP,SMTP,FTP,TELNET,SNMP;
2)传输层:TCP,UDP
3)网络层:IP,ICMP,ARP
4)路由控制协议:RIP,OSPF,BGP
2、IETF/RFC:TCP/IP协议由IETF讨论制定,需要标准化的协议被列入RFC(Request For Comment);
3、互联网中的每个网络都是由骨干网(BackBone)和末端网(Stub)组成的。每个网络之间通过NOC(Network Operation Center)相连。如果网络运营商不同,网络连接方式和使用方法也会不同,连接这种异构网络需要IX(Internet Exchange)支持。互联网是一个由众多异构网络通过IX连接起来的一个巨型网络;
4、OSI七层
由谁实现:
应用程序:应用层,表示层,会话层;
操作系统:传输层,网络层;
设备驱动与网络接口:数据链路层,物理层。
硬件(物理层):以太网或者电话线;
网络接口层(数据链路层):相当于NIC(网卡)的驱动程序,驱动程序是操作系统与硬件之间的桥梁,直接插入硬件是无法正常工作的。
互联网层(网络层):IP协议的作用是将分组数据包发送到目的主机,通过互联网层可以忽略网络结构的细节,从相互通信的主机角度看,对端主机就如同在一个云层对面。
连接互联网的所有主机跟路由器都实现IP的功能。但网桥,中继器和集线器可以不用实现IP或TCP功能,因为它们处于第3层以下。
IP:是分组交换的协议,但不具备重发机制。可能出现丢包,属于非可靠传输协议。
ICMP:IP数据包发送途中一旦发生异常导致无法到达对面地址时,无药给发送端返回一个异常通知。这便是ICMP的作用。例如:ping命令。
ARP:从分组数据包的IP地址中解析出物理地址(MAC)的一种协议。
传输层:让应用程序之间实现通信。通过端口号识别。对于正在通信的2个程序而已,中间细节全被忽略如同一朵云。
TCP:面向有连接的传输协议。可以正确处理丢包,传输乱序等异常,还可以有效利用带宽。但建立与断开至少需要7次发包收包(3次握手,4次挥手),浪费网络流。不适合视频会议。
UDP:面向无连接传输层协议。用于多播或者广播等视频通信领域
应用层(会话层以上)
会话层,表示层,应用层都由应用程序实现。
TCP/IP应用架构多数属于客户端/服务端模型。
WWW,万维网:是一种互联网上数据读写规范
浏览器与服务端之间用HTTP通信(应用层);
传输数据主要格式是HTML(表示层)。
E-mail
发送电子邮件协议为SMTP(Simple Mail Transfer Protocol);
电子邮件格式由MIME协议(表现层)拓展。
FTP(文件传输协议)
传输可以选择二进制还是文本格式。在Windows和macOS或Unix等系统间进行文件传输时会自动修改换行符,这时由于表示层;
FTP进行文件传输时会建立2个TCP协议,一个用于发出请求时需要的控制连接,一个是实际传输连接。这个是会话层功能。
远程登录(TELNET和SSH,UNIX的rlogin,Windows的X协议)
网络管理(SNMP,Simple Network Management Protocol)
使用SNMP管理的主机,网桥,路由器称作SNMP代理(agent);
可以通过表示层协议MIB(Management Information Base)访问网络接口的信息,通信数据量以及设备温度等信息。
5、TCP/IP分层与通信
1)每个分层都会对所发数据附加一个首部,上一层的数据加首部就是的数据。
2)数据单位:
<1>包:全能性术语;
<2>帧:数据链路层中包的单位;
<3>数据报:IP和UDP等网络层以上分层中包的单位;
<4>段:TCP数据流中的信息;
消息:应用协议的数据的单位;
3)发送数据包的例子(发邮件)
<1>填写收件人邮箱(应用层,SMTP);
<2>邮件内容编码(表示层);
<3>群发还是单发(会话层)。
3)TCP模块的处理
<1>根据会话层的指示,建立连接;
<2>在应用层数据的前端加上TCP首部,包括:1)源端口号和目标端口号(用于识别发送主机和接受主机的应用),2)序号(用于确定发送包的哪部分数据),3)校验和(用于判断数据是否损坏)。
4)IP模块的处理
<1>IP将“TCP首部 + 应用层数据”合起来当作自己的数据,并在TCP首部前面加上IP首部;IP首部中包含发送和接受端的IP地址,后面还有用来判断其后数据是TCP还是UDP的信息。
<2>IP包生成后,参考路由控制表决定IP包的路由或主机。发送给连接这些路由器或主机的驱动程序。
<3>如不知道接收端MAC地址,可以用ARP(Address Resolution Protocol)查找。只要知道了IP和MAC就可以给以太网驱动程序实现传输。
<4>网络接口(以太网驱动)处理5)附加上以太网首部:接收端与发送端的MAC地址,标志以太网类型的以太网数据协议。
并由硬件计算FCS(Frame Check Sequence),添加到包的最后用以判断数据包是否由于噪声而被破坏。
5)经过数据链路的包
<1>以太网包首部,IP包首部,TCP(UDP)包首部,以及以太网包尾;
<2>包的首部包含:
发送端接收端的地址(以太网/MAC,IP/IP,TCP(UDP)/端口);
上一个协议类型;
协议自身信息
6)应用程序的处理
<1>网络接口:先判断接受端MAC地址是不是自己的MAC地址,如不是则丢弃。如果是则先查看数据类型,如果是IP包则传给IP子程序,如果是ARP则给ARP。如果无法识别数据类型则丢弃;
<2>IP模块:同样先查看IP,后查看数据类型;在有路由器的情况下,会根据路由控制表调查该送达的主机和路由进行转发。
<3>TCP模块:先计算校验和,判断数据是否损坏。然后检查是否在按照顺序接受数据,完成后返回确认回执给发送端;最后查看端口号把数据给相应的程序;
<4>应用程序:接受TCP传来的数据处理并作出响应(正常/异常)。
三、数据链路层
数据链路层的作用:数据链路层协议规定了通过信息通信媒介互联的设备之间传输的规范。 0,1等计算机二进制 -> 电压高低,光的闪灭以及电波强弱。
涉及名词:VLAN(Virtual Local Area Network),WLAN(Wireless Local Area Network),PPP(Point to Point Protocol),FDDI(Fiber Distributed Data Interface),ATM(Asynchronous Transfer Mode)。
数据链路的段:被分割的网络。例如,使用中继器相连的两个网线在网络层上讲是一个网络,但在数据链路层上是2个段,一根网线一个段。
1、数据链路相关技术
1)MAC地址:用于识别数据链路中互连的节点。
以太网或FDDI中的MAC和无限LAN与蓝牙等MAC是不同规范;
烧入ROM中,全世界唯一;
长度为48比特