python 全栈 day03 计算机网络基础 -- 摘要
一、网络协议
网络协议是计算机网络中进行数据交换而建立的规则、标准或约定的集合。它规定了通信时信息必须采用的格式和这些格式的意义。
网络协议就是计算机之间进行通信的规则。为了使处于不同地点、装有不同操作系统的计算机之间可以在网络上实现有效地通信,而确立的一种为各类计算机都能认可的通信方法,任一方所表达的信息均能被其他各方所认同,从而确定的计算机接入internet通信的标准。
二、OSI五层协议
互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层,其中对应关系如图。
TCP/IP五层模型是将OSI七层种的应用层,表示层,会话层并作应用层,从TCP/IP五层协议的角度来阐述每层的由来和功能。用户接触的都是应用层,网络数据传输,自上而下每层都依赖于下一层,每层都有自己特定的协议。越往上越靠近用户,越往下越靠近硬件。
(1)物理层
利用物理物理线路实现组网,传输高低电平(电信号)高为1,低为0。
(2)数据链路层
定义了电信号的分组形式,形成一套统一的标准,以太网internet协议。
一组电信号构成了一组数据包及帧,一组数据帧(数据包)分为报头head和数据部分data。
head包含:源地址,目标地址,数据类型
data 包含:数据内容。
协议规定所有接入互联网的计算机都必须有要网卡,head中包含的源地址和目标地址就是指的网卡的地址,每块网卡上都有一个固定的不可改变的MAC地址。有了这些东西,同一网络内的主机就能通过广播的形式传输数据。
(3)网络层
不同网络上的设备要想通信,仅仅靠数据广播是不行的,此时就引入一套新的地址用来区分不同的广播域/子网,采取路由的方式广播发送数据包。
为了实现不同网络间设备的通信,每个设备都会配置IP地址,子网掩码,网关。通过IP地址和子网掩码来判断时候在同一网络。若不再同一网络,通过网关通信,走路由协议网关之间先建立通信,再进行数据传输。
注意:若通信,IP及子网都必须有;跨子网通信依赖IP地址,同子网通信依赖MAC地址。
(4)传输层
通过TCP或是UDP协议,建立端口到端口之间的通信
(5)应用层
应用程序都工作在应用层,应用层就是用于规范应用层的数据格式。传输层的TCP协议为程序传递数据,而数据的类型格式就需要应用层的协议来规定,这写协议就构成了应用层。
开发应用得调用,使用传输层的TCP/UDP协议,为方便使用,我们利用socket通信,它将复杂的TCP协议伪装成接口去调用,方便快捷。
若想实现网络通信,每天主机的四要素必不可少,分别为:IP地址,子网掩码,网关,DNS。这四要素可以通过DHCP协议自动获取,也可以自己动手配置。
三、用户上网流程
1、本机获取有效的IP地址,子网掩码,网关,DNS。
2、打开浏览器,在地址栏输入 www.baidu.com
3、域名解析(及DNS解析)
(1)、操作系统先检查自己本地的hosts文件是否有这个网址的映射关系,如果有,就调用这个IP地址映射,完成域名解析。
(2)、如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存中是否有这个网址的映射,如果有直接将数据返回,完成域名解析。
(3)、如果hosts与本地DNS解析器缓存都没有相对应的网址映射关系,首先会找本地DNS服务器去查询,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。
(4)、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是那个服务器来授权管理,并会返回一个负责该顶级域名服务器的一个IP地址。本地DNS服务器收到IP地址信息后,将会联系负责.com域的这台服务器。当这台负责.com域的服务器收到请求后,如果自己无法实现解析,它就会找一个管理.com域的下一级DNS服务器地址(baidu.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找baidu.com的域服务器,重复上面3,2,1动作进行查询,直至找到www.baidu.com主机。
(5)、将数据嵌入TCP数据包中返回。
4、TCP协议
TCP协议在数据包中外部嵌入http协议的端口,发送给网络层
5、IP协议
网络层接收到TCP协议数据包之后,会在外部嵌入一层IP数据包(源IP地址,目标IP地址)发送给数据链路层。
6、internet协议
IP数据包到达数据链路层,将被打上一层以太网数据包(源MAC地址,目标MAC地址,数据类型)。数据包封装完成后,通过物理层发给baidu服务器。
7、服务器响应
服务器经网络接收到数据包之后,分析数据包里客户的打开网址的请求,做出回应,再将响应以相同的方式发回请求主机。
8、本机收到从服务器返回的响应数据包之后,浏览器将网页打开,完成通信。