计算机网络的核心就是网络协议(如TCP / IP协议)
网络协议:规定着网络中数据交换的规则。用户间的数据终端是不同的,所以必须建立在一定的标准上计算机才能在网络中交互。
————建立网络通信规则、实现用户间的交互————
- 应用层:为操作系统或网络应用程序提供访问网络的服务接口—提供进程访问网络的接口
- 表示层:对传送的数据进行处理,包括转换、压缩、加密等,以保证被其他应用层理解(数据表示)
- 会话`:在传输层基础上,帮助进程建立、管理对话——主机间通信
- 传输层:通过流量控制、差错控制等,健壮IP协议不可靠的传输,同时实现进程间端口到端口的传输
- 网络层:在数据链路层基础上,提供主机端到端的传输服务—路径选择、优化传输IP数据报
- 数据链路层:数据组合成块,提供网络层到网络层的数据帧传输
- 物理层:提供硬件支持,解决通讯设备间的物理差异,将数据转换为比特流传输
网络层的划分
为了让不同型号的计算机可以互相通信,提出了开放系统互连 / 参考模型。即OSI / RM模型。Open system interconnect / Reference Model。
主要有七层,从下到上:物理层、数据链路层、网络层、传输层、会话表示应用层。
开放系统互连,OSI各层的划分
物理层:
提供硬件支持,消除设备差异,转化为比特流传输
定义
:硬件层,给上层接口提供物理传输媒介,解决不同通讯设备间的信号差异,将数据转换为比特流传输。
设备
:集线器(扩大信号、增加接口)、中继器(扩大信号)
数据链路层:
提供网络层到网络层的数据帧传输(帧转发)
定义
:为网络层提供可靠的数据传输,将网络层数据可靠传输到目标网络层。
方法
:如何数据组合成块,数据链路层我们将数据称为frame帧,在两个网络实体间提供数据链路的建立、维持和释放的管理。
总结
:物理寻址,数据成帧,帧转发
设备
:网桥(连接LAN之间)、交换机(连接LAN之间)——帧转发
网络层:
数据链路层的基础上,实现主机间端到端的数据传输(路径选择
、优化传输
)
定义
:网络层的目的是实现两个系统之间的端到端的传输,具体功能包括寻址和路由选择、连接的建立、保持和终止等。它提供的服务使传输层不需要了解网络中的数据传输和交换技术。
主要协议
:IP协议、地址解析协议ARP、逆RARP,英特网报文协议ICMP、英特网管组协议IGMP
方法
:对子网数据包进行路由选择、选择最优达到主机的路径。同时依靠分组交换等技术优化传输。
设备
:路由器 传输数据单位:数据包packet——IP数据报
1.什么是IP协议、IP地址、IP数据报
IP协议
:即互联网协议,是TCP / IP协议中的网络层。其目是是为了提高互联网的可拓展性。
1.实现互联网的大规模互联互通 2.分割网络应用和网络技术,便于两者的独立发展。根据端到端的设计原则,IP为主机提供一种无连接、不可靠、尽力而为的数据传输。
IP地址
:IP协议提供的一种地址格式,为互联网上的每一台主机分配一个逻辑地址,屏蔽物理地址的差异。32/128
IP数据报
:IP协议传输的数据单位,无确认数据包是否完整、按顺序发送等,是不可靠的。包含了发送地址、目标地址。
IP地址——电话号码 路由器——电信局的交换机
2.IP地址的表示
IP地址 = 网络地址 + 主机地址。
网络号:用于识别主机所在网络区域
主机号:识别该网络中的哪一台主机
概念 特征 网络范围 默认子网掩码 A类地址 0XXX XXXX 0——127.x.x.x 255.0.0.0/8 B类地址 0XXX XXXX 128——191.x.x.x 255.255.0.0/16 C类地址 0XXX XXXX 192——223.x.x.x 255.255.255.0/24 D类地址 1110 XXXX 192——223.x.x.x 用于组播 E类地址 1111 0XXX 192——223.x.x.x 用于科研保留
127.0.0.1是回环地址,用预测是本地通信。
子网掩码:明确区分出IP地址的两部分——网络地址和主机地址(1网络地址、0主机地址)
广播地址:专门向网络中所有工作站发送信息的地址
3.IP地址的计算
- 区分网络号和主机号——根据子网掩码
- 网络地址 = IP地址 & 子网掩码(全1)
- 广播地址 = 网络地址的基础上,主机位地址全变1
- 子网主机个数 = 2^(主机地址位数) - 2(网络地址+广播地址)
- 第一个主机IP = 网络地址 + 1
- 最后一个主机IP = 广播地址 - 1
例题1:202.112.14.137/255.255.255.224,计算对应网络地址、广播地址、主机数
202.112.14.137 ——202_112_14_1000 1001
255.255.255.224——255_255_255_1110 0000
网络地址:IP地址的前27位——202.112.14.1000 0000——202.112.14.128
广播地址:202.112.14.1001 1111
主机数:2的5次 - 2 = 30台
例题2:206.110.4 .0/18被划分成16个子网,每个子网掩码多少台主机?
子网划分的目的:子网的划分通过不同的子网掩码——解决IPv4地址的紧缺
解题:206.110.4 .0/18——主机数量 2^(32-18) / 16 = 2^(10)
3.网络层的地址解析协议
ARP地址解析协议
——IP地址求MAC地址:主机对网络上的所有主机进行广播,发送包含IP地址的地址解析请求,并保存获得反馈mac地址,从而主机间便可以通信。
RARP逆地址解析协议
——向服务器问询自己MAC地址对应的IP地址
4.网络层的路由选择协议
路由选择协议定义
:两台非直连的计算机经过几个网络通信时,需要路由器来找寻一条最优化的路线。
RIP路由信息协议
:用于网络设备之间交换路由信息,是向量-距离路由选择算法在局域网上的:自接实现。
OSPF开放式最短路经优先协议
:OSPF采用的是一种链路-状态算法,并因此克服了RIP协议和其他采用距离矢量算法协议的方法。
路由协议包括:
ICMP—Internet控制报文协议
:它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。
IGMP—Internet 组管理协议称为IGMP协议
:是因特网协议家族中的一个组播协议。该协议运行在主机和组播路由器之间。IGMP协议共有三个版本,即IGMPv1、v2 和v3。
传输层:
网络层实现了端口到端口的数据传输,而传输层则更近一步提供进程间端口到端口的连接通信。
流量控制(滑动窗口,拥塞窗口)、差错控制(确认重传)、健壮IP不可靠传输
定义:
A_单个主机运行多个进程,所以传输层具有复用和分用功能。
B_传输层具有流量控制、差错控制来保证数据传输的可靠性。
C_解决和健壮网络层提供的不可靠服务(重复、丢包)
主要协议:TCP协议(传输控制协议),UDP协议(用户数据报协议)
设备:网关,又称协议转换器——用于高层协议不同的网络互联。(数据重新打包,满足不同网络的互联)
实质上是一个网络通向其他网络的IP地址。
比如有网络A和网络B,网络A的IP地址范围为“192.168.1.1_192. 168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1_192.168.2.254”,子网掩码为255.255.255.0。而要实现这两个网络之间的通信,则必须通过网关。
1.说一下啊TCP / IP协议
TCP / IP协议是互联网最基本的协议,由网络层的IP协议和传输层的TCP协议组成。
简单来说:他们分工明确,网络层的IP协议负责数据端到端的传输,将数据从源地址传递到目标地址。
在此基础上,传输层的TCP协议通过流量控制、差错控制等,健壮IP协议不可靠的传输,同时进一步的实现进程间端口到端口的传输。
TCP协议:
面向端口到端口的通信协议,通过三次握手建立连接和四次挥手结束连接。
是一种可靠的数据流服务,采用“确认重传”技术来实现传输的可靠性。TCP还采用一种称为“滑动窗口”的方式进行流量控制,所谓窗口实际表示接收能力,用以限制发送方的发送速度。
————稳定可靠,确认重传,流量控制,快速重传。
2.TCP报文
3.TCP建立和断开连接—握手握的是双方数据原点的序列号seq
ACK:”acknowledge”确认号;SYN:”synchronize”请求同步标志;
FIN:”Finally”结束标志;seq:序列号——————都带有序列号
建立连接:三次握手
A SYN seq=x -》 B
A 《- ACK seq=x+1 SYN seq=y B
A ACK seq=y+1 -》 B
总结:
客户端向服务发送请求连接报文,并*同步起始序列号 *
服务器收到后,回复确认报文,并*同步起始序列号 *
客户端收到后也发送确认报文。连接建立
**为什么要三次握手?——面向字节的连接,依靠序列号 **
所以建立可靠的连接,需要确认客户端和服务器的起始序列号。而二次握手只确认了客户端的起始序列号。所以不能保证可靠的连接。
例子:——客户端请求延迟、服务器回复丢失导致开始无限发送
原理:客户端发送延迟
1.浪费资源——客户端发送的请求连接包由于传输问题阻塞,延时传递到了,此时服务器还是会和其建立连接。但是客户端已经放弃了这个连接,而服务器则会为这个连接浪费资源。
原理:服务器确认报文丢失
2.服务器资源发生死锁——客户端请求连接,服务器回应建立连接。但是服务器的应答传送失败。而服务器认为传递成功,开始传递数据,客户端则不会接收。服务器无线重复发送,资源形成死锁。
** 断开连接:四次挥手 **
A FIN seq=x+2 -》 B
A 《- ACK seq=x+3 B
A 《- FIN seq=y+1 B
A ACK seq=y+2 -》 B
四次挥手:————主动关闭方
1.客户端向服务器发送FIN报文,请求中断——表示我的数据传输完成了
2.服务器向客户端发送确认报文——表示当我的数据传输完了再中断
客户端进入FIN_WAIT——终止等待状态
3.服务器向客户端发送FIN报文——表示我的数据也传输完了
4.客户端向服务器发送确认报文,——表示可以断开连接
客户端进入TIME_WAIT状态,等待2MSL,确认服务器是否收到了确认报文。如果没收到,客户端会再次发送FIN指令。所以服务器先关闭,后客户端再关闭。
重要:如果没有TIME_WAIT状态,最后一次ACK丢失,客户端直接CLOSE,服务器会一直发送FIN
MSL——报文最大生存周期
** 为什么要四次挥手? **
因为服务器和客户端双方都可以发送和接收数据,是全双工模式,接收到FIN时意味一方完成了数据的收发,但是另一方未知。所以需要保证双方的发送和接收数据都完成了才能断开连接。
使用TCP的协议:FTP文本传输协议,Telent远程登陆协议,SMTP简单邮件传输协议,POP3邮箱协议,HTTP协议等。
4.UDP协议——用户数据协议 / TCP协议—传输控制协议
- UDP协议是用户数据协议,是面向无连接的通讯协议。由于通讯不需要连接,所以可以实现广播发送。
- UDP不需要接收方确认,属于不可靠的连接,可能产生丢包等现象。UDP信息包8个字节,TCP20字节。
- UDP和TCP同属一层,但是它不管数据包的顺序,错误或重发。其主要面向的是那些以查询—应答的服务,如NFS(共享文件)、视频直播等。
两者区别:
- TCP面向连接的,可靠的字节流服务
- UDP面向无连接的,不可靠的数据报服务——只知道:接收端IP和端口,所以每次只能读取一个报文数据
5.传输层——NAT协议——网络地址转换协议
NAT网络协议属于接入广域网的一种技术,将私有地址转换为IP地址,广泛运用于各种互联网接入上。
网关利用网络地址转换协议,有效地解决了IP地址不够地问题,同时也可以避免计算机收到网络的攻击。——(对外隐藏内部IP地址,减少IP减少IP地址产生的费用)
- A类 10.0.0.0/8, 即10.0.0.0–10.255.255.255
- B类 172.16.0.0/12, 即172.16.0.0–172.31.255.255
- C类 192.168.0.0/ 16, 即192.168.0.0–192.168.255.255
会话层(建立管理对话)、表示层(为应用层翻译):
会话层
:在传输层基础上,帮助进程建立并管理对话。
表示层
:对传送的数据进行操作,包括转换、加密、压缩等,以保证被其他应用层理解。
应用层:
定义
:为网络进程提供访问网络的接口。同时规定应用在通讯时,所需遵守的协议
数据传输单位
:报文
主要协议
:FTP文件传送协议,Telnet远程登陆协议,DNS域名解析协议,SMTP邮件传送协议,POP3邮局协议,HTTP超文本传输协议。
DNS域名解析协议—应用层
DNS域名解析协议:简单来说就是将URL域名转换为IP地址。
域名是由圆点分开的一串字母单词组成的,每个域名都对应一个唯一的IP地址。
DNS服务器之间传输时使用TCP,而客户端与DNS服务器之间传输时用的是UDP
DHCP协议—应用层协议,使用UDP协议
DHCP动态主机设置协议(Dynamic Host Configuration Protocol)是一个局域网的网络协议,使用UDP协议工作。
主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。
HTTP协议 / 超文本传输协议
是互联网上运用最广泛的一种协议,所有万维网的数据通信必须遵守它。
是一个客户端与服务器请求和应答的标准。
我们通过浏览器等工具发起http请求到指定服务器,然后获取我们所想要浏览的信息。
具体问题
问题:1.HTTP协议包括哪些请求?
主要包括四种和服务器交互的方法:GET、POST、PUT、DELETE
GET、POST区别:
理解方式:货车和运输公司的关系,货物放在车顶,车厢内,允许不允许超载,卸货
HTTP协议是基于TCP/IP协议的,GET和POST本质上都是TCP连接。但是其在请求方式上存在差异。
GET请求的数据存放在请求URL中,而POST存放在请求包体中
一般浏览器对请求URL长度有限制,所以导致GET请求获取的数据一般比POST少
同时由于请求数据暴露,所以使得GET的安全性也较低。
同时GET请求产生一个TCP数据报,而POST产生两个,对于验证数据的完整性更好。
GET——请求header和请求data一起发送——返回200
POST——请求header先发送——返回100——再发送请求data——返回200
2.HTTP的请求和响应
HTTP请求的格式包含:
(method—请求方法) (request—URL请求URL) (version—HTTP报文版本)
(headers—请求头部)
(entity-body—请求数据)
HTTP响应的格式包含:
(version) (status—请求过程状态) (reason-phrase)
(headers)
(entity-body)
常用响应码:
100——状态码
。返回消息
200—(成功)
服务器成功处理请求
301/302 Moved Permanently—(域名不存在)
请求的域名已被移走,这个域名不存在了
304 Not Modified(未修改)
表示客户所请求的缓存资源是最新的,无需修改
404 Not Found 未找到资源
501 Internal Server Error(服务器遇到错误)
服务器发生故障,无法对请求提供服务
3.数字证书相关问题——网页加密
数字证书:由证书中心CA的颁布,是网站对应的权威公共钥匙,用于验证网站发送的数字签名。
客户端 ————请求———> 服务器
客户端 <—————数字证书 + 网页——— 服务器
客户端 <—————网页 + 数字签名————— 服务器
客户端根据数字证书获得的公钥,然后利用公钥验证数字签名,确认是从对应的服务器发送来的数据。
总结:
- 私钥——用于生成数字签名 + 解密
- 公钥——*用于验证数字签名 * + 解密
问题1.浏览器输入域名访问的整个过程
首先客户端获取URL - > DNS解析 - >
TCP请求连接 - >客户端发送HTTP请求 - >服务端响应HTTP请求 - >
浏览器获得html代码 - >浏览器解析html代码,并请求html代码中的资源 - >
浏览器解析渲染页面 - >
TCP断开连接
问题2.TCP怎么保证可靠,以及它建立和断开的过程
- 1.三次握手和四次挥手保证连接和断开的正确性
- 2.校验和:将发送前的数据和发送后数据进行计算,比较结果
- 3.确认重传:接收方会告诉发送方接收了到了哪些数据,哪些数据是不完整的需要重新传递,保证数据的完整性。
- 4.流量控制:会根据ACK报头的窗口大小进行速度的调整
- 5.拥塞窗口:采用慢启动方法,先少量数据探路,再决定多大传输速度。定义了拥塞窗口概念:刚开始为1,逐渐增大,同时会和反馈获得的窗口大小进行比较,取小值
三次握手建立连接:
- 客户端向服务器发送请求连接报文 + 序列号
- 服务器收到后向客户端发送确认报文,并同步客户端起始序列号
- 客户端向服务器确认其发送序列号,并同步服务器起始序列号
四次挥手断开连接:
由于TCP连接是双工模式,即客户端和服务器都可以收发数据,所以需要双方同时满足收发完成,才可以断开连接。
- 首先客户端向服务器发送请求终止报文,进入FIN _WAIT状态——表示我的数据接受完成可以断开
- 服务器根据回复确认报文——表示当我的数据接收完成后,再次确认
- 服务器数据接收完成后,向客户端发送终止报文——表示我的数据接收完成,可以关闭
- 客户端接收到服务器的FIN报文后,进入TIME_WAIT状态,等待两个周期的报文最长生存时间,如果此阶段未收到服务器信息,说明没有问题,断开连接。
问题3.说一说TCP模型,状态转移
五层从下到上:物理层,数据链路层,网络层,传输层,应用层
3次握手建立连接,传输数据,4次挥手断开连接。
问题3.1请回答一下HTTP和HTTPS的区别,以及HTTPS有什么缺点?
- HTTP协议是以明文的方式在网络中传输的,而HTTPS传输的数据是经过TLS加密的,HTTPS具有更高的安全性
- HTTPS在三次握手之后,需要进行SSL的握手,协商后加密使用的对称加密密钥
- HTTPS需要服务端申请证书,浏览器安装相应证书。
- HTTP协议端口是80,HTTPS是443
- HTTPS优点:A数据加密安全性更高,B协议可以认证用户和服务器,确保数据发送到正确的用户和服务器。
- HTTPS缺点:
- A:握手阶段增加SSL握手,延时增加
- B:部署成本较高:使用证书来验证安全,需要购买CA证书。
- C:采用HTTPS协议需要进行加密解密计算,对服务器要求也更高
问题3.2请你说一说HTTP返回码
- 100——状态码。返回消息
- 200—(成功)服务器成功处理请求
- 301/302 Moved Permanently—(域名不存在)请求的域名已被移走,这个域名不存在了
- 304 Not Modified(未修改) 表示客户所请求的缓存资源是最新的,无需修改
- 404 Not Found 未找到资源
- 501 Internal Server Error(服务器遇到错误)服务器发生故障,无法对请求提供服务
问题4.请你说一说IP地址作用,以及MAC地址作用
MAC地址是一个硬件地址,又称网卡地址,来定义网络设备的位置,由生产制造商写在硬件内部,位于数据链路层。
IP地址(用逻辑地址屏蔽物理地址)是IP协议提供的一种地址格式,它给每个网络和每台主机分配一个逻辑地址,用于屏蔽物理地址的差异。
问题5.请回答OSI七层模型和TCP/IP四层模型,每层列举2个协议
OSI七层模型:
- 应用层:为应用程序提网络服务接口。主要协议HTTP,HTTPS,FTP,DNS
- 展示层:对数据进行翻译;JPEG ASII
- 会话层:建立,管理,终止会话;NFS ,RPC
- 传输层:提供端口到端口的可靠报文传递:UDP,TCP
- 网络层:提供端到端的传输。传递路径选择和优化传输:IP协议,ARP
- 数据链路层:提供点到点的数据帧传递:MAC,VLAN
- 物理层:提供硬件支持,消除设备间的物理差异,传输比特流,主要协议RJ45
TCP/IP模型:
- 应用层HTTP DNS
- 传输层UDP TCP
- 网络层IP ARP
- 数据链路层:MAC,VLAN
问题6.输入一个网址,计算机都用到了哪些层
TCP/IP协议中的五个层都用到了。
首先客户端获取URL - > DNS解析 - > (应用层的https超文本传输协议,DNS域名解析协议)
TCP请求连接 - >客户端发送HTTP请求 - >服务端响应HTTP请求 - >
浏览器获得html代码 - >浏览器解析html代码,并请求html代码中的资源 - >浏览器解析渲染页面 - >
TCP断开连接
(传输层的TCP协议 / 网络层的IP协议、ARP地址解析协议)
(底层数据的传输用到了数据链路层和物理层,提供硬件支持,同时传递数据)
问题7.说一下TCP中的拥塞控制?说明时候开始慢慢增长
网络层:路径选择、流量控制
传输层:确认重传、滑动窗口、拥塞控制
拥塞:是防止服务器和客户端之间过多的数据传输,使得网络中的路由器和链路发生过载而瘫痪。
首先慢开始 ,出现拥塞情况,慢启动极限变为一半,拥塞窗口重新从0开始增加)
快速重传和快速恢复
问题8.说一下数据链路层的交互过程)—— 通过MAC地址交互
网络层到数据链路层采用MAC地址作为通信地址。
数据包从网络层准备发往数据链路层时,首先会去地址缓存表中查找相应的ip_mac对应关系表,如果查到了就将ip的mac地址封装到链路层数据包的包头。
如果没有,就采用广播的形式,查找相应ip的mac地址,相应的主机收到广播后会回复自己IP对应得mac地址。
问题9.说一下数据传递到IP层如何知道报文传递给哪个应用程序,它怎么区分UDP还是TCP报文
根据端口区分给哪个应用。
根据报文头中的协议标识字段,17 / UDP,6 / TCP
问题10.SOCKET具体的网络层是如何操作的
首先服务器需要打开
服务端:
- 创建socket套接字
- bind将本机地址绑定套接字
- listen设置此套接字可最大连接的客户端
- accept开始监听等待客户端的连接
客户端:
- socket创建套接字
- connect发送请求连接的请求
建立连接后Recv / Send
问题11.服务端监听的端口,但是还没有客户端连接进来,此时处于什么状态
需要看用到了什么编程模型,如果是socket中的recv,一般是阻塞状态,而epoll,select等这样的io复用情况则是处于运行状态。
问题12.TCP和UDP个自适应的场景
- TCP是面向连接的,可靠的字节流服务。
- UDP是面向无连接的,不可靠的数据包服务。
- UDP可以一对多,TCP为端口对端口。
- TCP的开销为20个字节,UDP8个字节。
综上UDP快,但是不可靠。TCP慢,但是可靠
- TCP用于——要求准确的文件传输
- UDP用于——视频传输、实时通信、广播通信等。
问题13.说一下HTTP协议
HTTP协议是超文本传输协议,是从万维网服务器到本地浏览器的超文本传输协议。
基于TCP / IP通信协议来传输数据的。属于应用层面向对象的协议,适用于分布式超媒体信息系统。HTTP协议工作于客户端和服务端架构上。
浏览器作为HTTP的客户端通过URL向WEB服务器发送请求,WEB服务器根据接收到的请求后,向客户端发送响应信息及传输数据。
问题14.说一下HTTP协议中GET和POST的区别
http主要包括四种和服务器交互的方法:GET、POST、PUT、DELETE
GET、POST区别:
理解方式:货车和运输公司的关系,货物放在车顶,车厢内,允许不允许超载,卸货
HTTP协议是基于TCP/IP协议的,GET和POST本质上都是TCP连接。但是其在请求方式上存在差异。
GET请求的数据存放在请求URL中,而POST存放在请求包体中
一般浏览器对请求URL长度有限制,所以导致GET请求获取的数据一般比POST少
同时由于请求数据暴露,所以使得GET的安全性也较低。
同时GET请求产生一个TCP数据报,而POST产生两个,对于验证数据的完整性更好。
GET——请求header和请求data一起发送——返回200
POST——请求header先发送——返回100——再发送请求data——返回200