定义:
计算机网络的组成可以按照划分的角度不同按照如下三种方式分类:
从组成部分上可分为:
从工作方式上可分为:
从功能组成上可分为:
按范围可以分为:
按照使用者可以分为:
按照交换技术可以分为:
按照拓扑结构可分为:
其中,星型网络中,每N
个节点需要N-1
个链路;网状型是当前互联网常用结构
按传输技术可分为:
速率:
带宽:
吞吐量:
时延带宽积:
往返时延RTT:
ping
命令返回数据即RTT利用率:
利用率主要可以分为信道利用率和网络利用率两种:
信道利用率:
信道利用率的加权平均值
时延和利用率的关系:
分层的基本原则:
1. 各层之间相互独立,每层只实现一种相对独立的功能。
2. 每层之间界限自然清晰,易于理解,互相交流尽可能少。
3. 结构上可分隔开,每层都采用最合适的技术实现。
4. 保持下层对上层的独立性,上层单向使用所有下层提供的服务。
5. 分层结构应该能促进标准化工作。
定义:
计算机网络体系结构:
实体:
协议:
接口:
服务:
服务是垂直的,协议是水平的。
SDU服务数据单元:
PCI协议控制信息:
PDU协议数据单元:
SDU、PCI、PDU之间的关系如下图所示:
PDU越向下层越大。
计算机网络分层结构可以分为:
OSI为开放互联参考模型,但是理论成功,事实失败。
OSI七层模型如下:
各层详细定义:
应用层:
表示层:
会话层:
传输层:
网络层:
数据链路层:
物理层:
至此,则不难理解在OSI模型下,两台电脑间互相通信的过程图为:
其中:
H2
,还增加了尾部L2
。补充定义:
报文(message):
报文段(segment):
分组/包(packet):
数据报(datagram):
帧(frame):
数据单元(data unit):
TCP/IP主要有四层,其与OSI七层协议的主要区别及TCP/IP的协议栈如下图:
注:TCP/IP协议中不止包含TCP、IP两种协议。
OSI模型和TCP模型的相同点:
OSI模型和TCP模型的不同点:
定义内容 | OSI定义了服务、协议、接口 | |
发明过程 | 先设计的模型再设计的协议,在设计时不偏向特定协议 | 先设计的协议在发明的模型,在设计时主要偏向TCP&IP协议,将IP作为设计的重要层次 |
网络层 | 支持无连接方式(IP)和面向链接方式 | 支持无连接方式 |
传输层 | 支持面向连接方式 | 支持无连接方式和面向链接方式 |
面向连接方式:
无连接方式:
把TCP/IP协议中的网络接口层重新拆回数据链路层和物理层即为五层参考模型,本身也是TCP/IP协议:
五层模型数据交换流程如下:
在Windows下可以使用Powershell命令查询 www.baidu.com
的IP地址:
Resolve-DnsName www.baidu.com
随后会回复如下信息(节选):
Name Type TTL Section NameHost
---- ---- --- ------- --------
www.baidu.com CNAME 99 Answer www.a.shifen.com
Name : www.a.shifen.com
QueryType : A
TTL : 81
Section : Answer
IP4Address : 39.156.66.18
随后即可得到IP: 39.156.66.18
随后在Python中输入如下代码:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("39.156.66.18", 80)) #本行填上一步获得的百度IP并建立TCP连接(当然可以直接填写百度的域名)
s.send("GET / HTTP/1.1\r\n\r\n".encode("utf-8"))
print(s.recv(10000))
即可打印出百度的html代码。
在上述步骤中,HTTP只是基于TCP的一个解析协议,本质还是建立了TCP连接,并通过TCP连接发送HTTP的GET请求命令。
世界上最早的计算机网络是:
《王道》P8
《王道》P7
《王道》P7
《王道》P7
《王道》P7