计算机网络五层架构
人们通常情况下,会将互联网分为五层结构,由下而上分别为:实体层、链路层、网络层、传输层和应
用层。
每一层之间都有不同的形态和构成机制,
所以如果想实现不同层之间的联系,必须遵守不同层之间的规则。这
些规则统称为
“
互联网协议
”
,它们是互联网的核心。
物理层
/
实体层 :
它规定了网络的电气特性,负责
0
和
1
电信号的传送。
链路层 :
实体层传输的是
0
和
1
电信号,计算机解读不了,我们必须为其制定一套规则来进行传输,于是就有了以
太网协议。
网络层 :
从理论上讲,只要我们获取
MAC
地址,就可以对任何一台计算机进行信息的发送,但是实际操作起来却
有很大的困难,还需要通过其他方式进行下一步的信息传递。
1.
广播
以太网采用了一种很
"
原始
"
的方式,
它不是把数据包准确送到接收方,而是向本网络内所有计算机发送,让每台计算机自己判断是否为接收方。2.IP
协议
实现这个目的的就是
IP
协议。
传输层 :传输层建立的是端口到端口之间的通信,相比之下网络层建立的是主机到主机之间的通信。
应用层:
网络结构的最上面一层是应用层,应用层直接面向用户,比如浏览器、邮件、影音等等,这些程序发送
过来的数据也是各种各样的,所以必须实现规定好的格式才能进行解读。应用层的作用,就是规定应用
程序的数据格式。如,万维网浏览:
http
协议;邮件收发:
smtp/POP3
协议;文件传输:
ftp
协议;域名
服务:
DNS
协议等。应用层协议规定了进程在通信时所遵守的规则。
1.
应用层 (书信格式言)
2.
传输层 (挂号信、平信的区别)
3.
网络层 (收信人地址、邮编)
4.
数据链路层 (邮局网点间运输)
5.
物理层 (公路)
浏览器协议
HTTP
(超文本传输协议):用于在
Web
浏览器和服务器之间传输超文本数据,使我们能够在互联
网上浏览网页。
HTTPS
(安全套接层超文本传输协议):是
HTTP
的安全版本,使用加密来保护数据传输的安全性,
例如在网上进行购物或登录时。
FTP
(文件传输协议):用于在网络上传输文件,使用户可以上传或下载文件到远程服务器。
SMTP
(简单邮件传输协议):用于电子邮件的发送,规定了邮件客户端和邮件服务器之间的交互
方式。
POP3
(邮局协议版本
3
)和
IMAP
(
Internet
消息访问协议):用于接收电子邮件,分别用于从邮件
服务器下载邮件或在服务器上管理邮件。
DNS
(域名系统):将域名转换为
IP
地址的协议,使我们能够通过易于记忆的域名访问网站。
Telnet
:用于在网络上远程登录到其他计算机,以便远程管理和控制。
以上几个是比较常见的协议
cookie和session的区别
HTTP协议是无状态协议,自身不对请求和响应直接的通信状态进行保存,但有些场景下我们需要
保存,但有些场景下我们需要保存用户的登录信息,所有就引入了
cookie
和
session
来管理状态。
保存位置与安全性:
cookie
保存在客户端,
session
保存在服务端,所以在安全性上面,
cookie
存
在安全隐患,可以通过拦截或本地文件找到
cookie
后进行攻击,而
session
相对更加安全。因此,
可以将登陆信息等重要信息存放为
session
中;其他信息如果需要保留,可以放在
cookie
中。
存储容量:单个
cookie
最大只允许
4KB
,一个站点最多保存
20
个
Cookie
;
session
没有大小限制,
个数只跟服务器的内存大小有关。
有效期与实现机制:cookie
可长期有效存在;
session
依赖于
cookie
,过期时间默认为
-1
,只需关
闭窗口该
session
就会失效。每个客户端对应一个
session
,客户端之间的
session
相互独立;
cookie
:
cookie
是一小段的文本信息,当客户端请求服务器时,如果服务器需要记录该用户状态,
就在响应头中向客户端浏览器颁发一个
Cookie
,而客户端浏览器会把
cookie
保存起来。当再次请求
该网站时,浏览器把请求的网站连同该
cookie
一起提交给服务器,服务器会检查该
cookie
,以此来
辨认用户状态。
session:当客户端请求服务器时,都会带上
cookie
,
cookie
里面一般都会有一个
JSESSIONID
,服
务器就按照
JSESSIONID
来找到对应的
session
;如果客户端请求不包含
JSESSIONID
,则为此客户
端创建session
并生成相关联的
JSESSIONID
,并将这个
JSESSIONID
在本次响应中返回给客户端保
存。客户端保存这个
JSESSIONID
的方式可以使用
cookie
机制。若浏览器禁用
Cookie
的话,可以通 过 URL
重写机制 将
JSESSIONID
传回服务器。
GET和POST请求的区别
1. 功能:get一般用来从服务器上面获取资源,post一般用来更新服务器上面的资源。
2.
幂等性:
get
是幂等的,
post
为非幂等的。
3.
安全性:
get
请求的参数会明文附加在
URL
之后,而
post
请求提交的数据则被封装到请求体
中,相对更安全。
4.
传输数据量的大小:
get
请求允许发送的数据量比较小,大多数浏览器都会限制请求的
url
长度
在
2048
个字节,而大多数服务器最多处理
64K
大小的
url
;而
post
请求提交的数据量则是没有
大小限制的。
5.
参数的数据类型:
GET
只接受
ASCII
字符,而
POST
没有限制。
6. GET
在浏览器回退时是无害的,而
POST
会再次提交请求。
7. get
请求可以被缓存,可以被保留在浏览器的历史记录中;
post
请求不会被缓存,不会被保留
在浏览器的历史记录中。
浏览器的渲染原理 !!!
1.
解析
url
,获取
url
中包含的域名。
2.
通过
DNS
系统查询域名对应的
IP
。
3.浏览器得到域名对应的
IP
地址之后,向服务器发起三次握手请求建立
TCP
连接。
4. TCP
连接建立起来后,浏览器向服务器发送
HTTP
请求,如果
HTML
文件在缓存中,浏览器则直接返 回,如果没有,就去后台拿。
5.
服务器接收到请求后,根据路径参数映射到特定的处理器进行处理,并将处理结果以及响应的视图 返回给浏览器。
6.
浏览器解析视图,并根据请求到的资源、数据进行渲染页面,最终向用户呈现一个完整的页面。
渲染过程:
1
构建
DOM
树
(DOM tree)
:从上到下解析
HTML
文档生成
DOM
节点树(
DOM tree
),也叫内容树
(
content tree
)。
2
构建
CSSOM(CSS Object Model)
规则树:加载解析样式生成
CSSOM
树。
3
执行
JavaScript
:加载并执行
JavaScript
代码(包括内联代码或外联
JavaScript
文件)。
4
构建渲染树
(render tree)
:根据
DOM
树和
CSSOM
树
,
生成渲染树
(render tree)
。
5
渲染树:按顺序展示在屏幕上的一系列矩形,这些矩形带有字体,颜色和尺寸等视觉属性。
6
布局(
layout
):根据渲染树将节点树的每一个节点布局在屏幕上的正确位置。
7
绘制(
painting
):遍历渲染树绘制所有节点,为每一个节点适用对应的样式,这一过程是通过
UI
后 端模块完成。