第一章 概述
1. 互联网发展的三个阶段
第一阶段:从单个网络 ARPANET 向互联网发展的过程。
第二阶段:形成了三级结构的互连网。分为主干网、地区网和校园网。主要覆盖美国的大学和研究所。
第三阶段:逐渐形成了多层次ISP结构的互连网。如下图:
图1-1 计算机多层次ISP结构和IXP
2. 计算机体系结构
图1-2 计算机体系图
各层的说明与作用:
1、应用层:体系中的最高层,比较熟悉的域名DNS协议,HTTP协议,SMTP协议都在该层。
2、运输层:主机之间提供数据传输服务的,主要有TCP协和UDP协议。
3、网络层:为网上的不同主机提供通信服务,使用IP协议。
4、数据链路层:对网络上的传输信息的检错与纠错,协议最复杂的一层。
5、物理层:物理层为设备之间的数据通信提供传输媒体及互连设备,为数据传输提供可靠的环境。
第二章 物理层
1. 通信基础概念
1、通信系统分为三大部分:源系统,传输系统和目的系统。
图2-1 计算机通信模型
2、信道相关
信噪比(dB)= 10 lg(S/N)(dB)
香农公式:信道的极限传输速率C是
C = W log2(1 + S/N)(bit/s)
W是信道的贷款,单位是HZ,S是信道内所传信号的平均功率,N是信道内的高斯噪音功率。
参考:信噪比和香农公式
第三章 数据链路层
1. 数据链路的基本概念
什么是数据链路层?假设一个场景,主机H1,通过连接路由器R1,R2,R3然后到主机H2进行上网。
那么,链路指的是一个结点到另一个结点之间的物理线路。
而数据链路除了物理线路之外,还包括了一系统通信的协议控制信息的传输。
2. 协议三个问题
1、封装成帧
意思是在一段数据前后分别添加首部和尾部,比如首部为SOH开始符,尾部为EOT结束符。
当接收到某个数据出现差错时,直接收到了SOH或者只有EOT说明数据已经不完整,
就可以很清楚的知道该重新发送哪个帧。如图完整的帧包括:
SOH | 装在帧中的数据 | EOT |
---|
2、透明传输
这里透明的含义指的是将某些事物看起来像不存在一样.
比如:帧数据中出现了像SOH和EOT控制字符相同的数据,数据传输过程中很可能错误的判断帧的边界,
从而导致帧数据的不完整。
于是,解决该问题的方法是:在在数据中出现SOH或EOT控制字符前加上转义字符ESC,
这就保证了数据的透明传输。
3、差错检测
这个内容比较多,这里不做深究,大概意思是:为了保证数据的正确性,防止比特0变为1等情况发生,
在数据后面添加冗余码。
具体请参考:
差错检测
第四章 网络层
1. 网际协议IP
网际协议IP是TCP/IP协议中最重要的协议之一。与之相关的协议还有:
地址解析协议(ARP)
网际控制报文协议(ICMP)
网际组管理协议(IGMP)
2. 地址解析协议
APR协议的作用是:在已知IP地址时,需要找到相应的硬件地址。
每台主机都有ARP高速缓存,里面有各主机和路由器的IP地址到硬件地址的映射表。
同一局域网下
如果主机A向主机B发送IP数据报,首先从高速缓存中查询是否有B的mac地址。
如果没有,ARP进程发送广播,而只有指定IP才可接收到广播进行回复。
不同网络下
主机A先找到本网下的路由器,接下来的工作右路由器完成
3. IP数据报格式
格式如下图:
第五章 运输层
1. UDP和TCP
用户数据报协议UDP是无连接的,是面向报文的不可靠交付,还有首部开销小、没有阻塞控制等特点。
传输控制协议TCP是面向连接的,提供可靠交付等特点。
其中他们的头部分别如下图:
图5-1 UDP头部
图5-2 TCP头部
2. TCP连接
TCP把连接作为最基本的抽象,每一条TCP连接有两个端点。端点叫做套接字(Socket),
是由IP地址+端口号组成,比如127.0.0.1:8080。
注意:这里的socket与访问联网的应用编程接口API socket不同。
3. TCP三次握手
过程:
(1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送
给Server,Client进入SYN_SENT状态,等待Server确认。
(2)第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,
Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client
以确认连接请求,Server进入SYN_RCVD状态。
(3)第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则
将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1
,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完
成三次握手,随后Client与Server之间可以开始传输数据了。
4. TCP四次挥手
过程:
(1)第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
(2)第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
(3)第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
(4)第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。
第六章 应用层
1. 域名系统
域名系统是用来把人们容易记忆的机器名称转换为IP地址
其中域名空间如下:
2. 文件传输协议
1. FTP
工作原理:
FTP使用客户端服务器方式,一个服务器进程可以为多个客户端进程提供服务。
服务器进程右两大部分组成,一个是主进程,负责接收新的请求,另外有若干个从属进程,负责处理单个请求。
工作情况如图:
2. TFTP
TCP/IP协议族中的TFTP是简单文件传输协议,可用于UDP环境,而且占用内存较小
3. DHCP
DHCP:动态主机配置协议,提供了即插即用联网机制,保证了一台计算机加入网络时
获取IP地址而不用手工配置。
例如:局域网自动分配IP地址。
4. P2P
P2P对等网络。
各台计算机功能相同,无主从之分。
整个网络不依赖专有服务器。
消除了中间商,沟通更加便捷
具有以下特点:
非中心化;
可扩展性;
健壮性;
高性价比;
隐私保护;
负载均衡。
第七章 网络安全
1. 数字签名
过程:A向B发送消息时,先通过签名算法对消息进行签名加密。B收到消息后,执行
解密算法对消息进行解密,如果能还原出原消息,证明消息没被篡改。
签名的作用不是对消息进行保密,而是对消息进行核实。
如图示:
在生产中,比如微信支付,双方确定一个固定随机字符串key,防止被他人知道。
订单发送过程前,先把订单+key进行加密获得sign,然后和订单一同发送给微信端。
微信端接收到订单详情和sign,首先也对订单+key进行加密获取mySign,最后,
通过比较sign和mySign来确定订单是否在传输过程中被篡改。