TCP/IP四层模型
应用层
传输层
网络层
网络接口层
物理层:连接不同的物理设备,传输比特流。在物理设备上传输数据。为上层协议提供了一个传输数据的可靠的物理媒介
-
中继器(Repeater 也叫放大器)
-
集线器 同一局域网的再生、放大信号(多端口的中继器) 半双工,不能隔离冲突域也不能隔离广播域
单工通信信道 只能一个方向通信,没有反方向反馈的信道
半双工通信信道 双方都可以发送接收信息,但是不能同时发送,不能同时接收
全双工通信信道:双方都可以同时发送和接收
数据链路层
向上层网络层提供服务,最基本的服务是将来自网络层的数据可靠地传输到相邻结点的目标机网络层。
数据链路层在不可靠的物理介质上提供可靠的传输
数据链路主要作用:物理地址寻址、数据的成帧、流量控制、数据检错、重发
帧是数据链路层数据的基本单位 帧首部和尾部是特定的控制字符
透明传输:“透明”是指
即使控制字符在帧数据中,但是要当做不存在去处理
。即在控制字符前加上转义字符ESC
最大传输单元MTU
路径MTU:即链路中MTU的最小值
以太网协议
MAC地址:每个设备都有唯一的MAC地址,共48位,使用十六进制表示
以太网协议完成相邻设备的数据帧传输,解决子网内部点对点的通信
以太网协议只能解决单个局域网内点对点通信,多个局域网互通需要IP协议来解决
网络层
实现两个端系统之间的数据透明传输,具体包括寻址、路由选择、连接的建立、保持、终止。数据交换技术是报文交换:采用储存转发方式,数据交换单位是报文
网络层主要协议:
IP协议(Internet Protocol,因特网互联协议);
ICMP协议(Internet Control Message Protocol,因特网控制报文协议);
ARP协议(Address Resolution Protocol,地址解析协议);
RARP协议(Reverse Address Resolution Protocol,逆地址解析协议)。
IP协议
提供不可靠、无连接的端到端的数据包传输服务,主要实现:
数据传输
数据分片
IP协议主要功能:无连接数据报传输、数据包路由选择和差错控制
ICMP协议详解
网际控制报文协议(Internet Control Message Protocol),可以报告错误信息或者异常情况,ICMP报文封装在IP数据报当中
ICMP协议的应用:
-
Ping应用 :网络故障的排查;
-
Traceroute应用 :可以探测IP数据报在网络中走过的路径。
地址解析协议 ARP(Address Resolution Protocol):为网卡(网络适配器)的IP地址到对应的硬件地址提供动态映射。可以把
网络层32位地址转化为数据链路层MAC48位地址
。
ARP是一个
独立的三层协议
,所以ARP报文在向数据链路层传输时
不需要经过IP协议的封装
,而是
直接生成
自己的报文,然后再到数据链路层
封装成帧
RARP(Reverse Address Resolution Protocol)协议
指逆地址解析协议
,可以把数据链路层MAC48位地址转化为网络层32位地址。
网络地址转换NAT技术
用于多个主机通过一个公有IP访问访问互联网的私有网络中,减缓了IP地址的消耗,但是增加了网络通信的复杂度。
NAT 工作原理:
从内网出去的IP数据报,将其IP地址替换为NAT服务器拥有的合法的公共IP地址,并将替换关系记录到NAT转换表中;
从公共互联网返回的IP数据报,依据其目的的IP地址检索NAT转换表,并利用检索到的内部私有IP地址替换目的IP地址,然后将IP数据报转发到内部网络。
ARP协议与RARP协议
地址解析协议ARP(Address Resolution Protocol):为网卡(网络适配器)的IP地址到对应的硬件地址提供动态映射。把网络层32位地址转化为数据链路层MAC48位地址
ARP是即插即用的,一个ARp表是自动建立的,不需要系统管理员来配置
RARP(Reverse Address Resolution Protocol)协议指逆地址解析协议,可以把数据链路层MAC48位地址转化为网络层32位地址。
输入网址后回车,之后发生了什么?
-
URL 解析,解析 http 协议、端口、资源地址。
-
DNS 查询:首先查看本地DNS缓存,再查询本地 host文件,再访问 DNS 服务器将 域名解析成 ip 地址等等。在每一步如果查到了都会直接访问
-
建立 TCP 连接。
-
服务器收到请求后处理,并且构造响应返回给客户端。
-
客户端接收 HTTP 报文响应。
-
渲染页面,最后有可能会四次挥手断开连接,也可能不会而是复用连接。
URL(同一资源定位符)
scheme://host.domain:port/path/filename
-
scheme 定义应用层协议类型,比如 http、https、 ftp 等;
-
host 定义域主机(http 的默认主机是 www);
-
port 主机的端口,http 默认是 80, https 默认是 443;
-
path 服务器上的资源路径;
-
filename - 定义文档/资源的名称;
DNS解析过程:
-
本地电脑检查浏览器缓存中有没有该域名对应的解析过的IP地址。域名被缓存的时间由TTL来设置,通常要求时间长度适中,太长IP地址可能会发生变化而导致无法解析到变化后的IP地址,太短会导致用户每次访问网站都要重新解析域名
-
浏览器会查找操作系统缓存中是否有这个域名对应的DNS解析结果。
-
需要用到网络配置中的“DNS服务器地址”。操作系统会把这个域名发送给这个本地DNS服务器。 每个完整的内网通常都会配置本地DNS服务器,例如用户是在学校或工作单位接入互联网,那么用户的本地DNS服务器肯定在学校或工作单位里面。它们一般都会缓存域名解析结果,当然缓存时间是受到域名的失效时间控制的。后续的DNS迭代和递归也是由本地DNS服务器负责。
-
如果本地DNS服务器仍然没有命中,就直接到根DNS服务器请求解析
-
根DNS服务器返回给本地DNS域名服务器一个顶级DNS服务器地址,它是国际顶级域名服务器,如.com .cn等
-
本地DNS服务器再向上一步获得的顶级DNS服务器发送解析请求。
-
接受请求的顶级DNS服务器查找并且返回此域名对应的Name Server域名服务器的地址。 这个Name Server服务器就是要访问的网站域名提供商的服务器,其实该域名的解析任务就是由域名提供商的服务器来完成。
-
Name Server服务器会查询储存的域名和IP的映射关系表,再把查询出来的域名和IP地址等信息,连同一个TTL值返回给本地DNS服务器
-
本地DNS服务器返回给浏览器对应的IP和TTL值,本地DNS服务器会缓存在这个域名和IP的对应关系,缓存时间由TTL的值控制。
-
把解析的结果返回给本地电脑,本地电脑根据TTL值缓存在本地系统缓存中,域名解析过程结束在实际的DNS解析过程中,可能还不止这10步,如Name Server可能有很多级,或者有一个GTM来负载均衡控制,这都有可能会影响域名解析过程。
递归查询和迭代查询的区别:递归查询直接返回一个准确的查询结果,迭代查询会返回一个其他能够解析查询请求的DNS服务器,直到查询到结果。
建立TCP/IP链接
应用层:发送HTTP请求
浏览器从地址栏得到服务器IP地址,接着构造一个HTTP报文,其中包括:
-
请求行包含请求方法、URL、协议版本
-
请求报头由键值对组成,每行一对,关键字与值使用英文“:”分割
-
请求体:请求参数,并不是所有的请求都有请求参数。也可以将参数放在body里面
传输层:TCP传输报文
建立TCP/IP连接,在传输层解决了数据的可靠传输、流量控制、拥塞控制
-
TCP的可靠传输服务是通过确认和超时重传的机制来实现的,而确认和超时重传的具体实现是通过以字节为单位的滑动窗口机制来完成
-
TPC拥塞控制:TCP通过慢启动、拥塞避免、加速递减、快重传和快恢复等机制来共同实现拥塞控制
-
流量控制:采用通知窗口实现对发送端的流量控制,通知窗口大小的单位是字节。TCP通过在TCP数据段首部的窗口字段中填入当前设定的接收窗口(即通知窗口)的大小,用来告知对方'我放当前的接收窗口的大小',以实现流量控制。发送窗口大小在建立连接时商定,在通信过程,双方可以动态地根据自己的情况调整对方的发送窗口大小
网络层:IP协议查询与MAC地址
将数据段打包,并加入源和目标的IP地址,并且负责寻找传输路线。判断目标地址是否与当前地址处于同一网络中,是的话直接根据MAC地址发送,否则使用路由表查找下一跳地址,以及使用ARP(地址解析协议)查询它的MAC地址
链路层:以太网协议
根据以太网协议将数据分为以“帧”为单位的数据包,每一帧分为两个部分:
-
标头:数据包的发送者、接受者、数据类型
-
数据:数据包具体内容
MAC地址
以太网规定了连入网络的所有设备都必须具备“网卡”接口,数据包都是从一块网卡传递到另一块网卡,网卡的地址就是 Mac 地址。每一个 Mac 地址都是独一无二的,具备了一对一的能力
三次握手与四次挥手