前端面试之---通信网络 HTTP相关

来源:互联网 发布:淘宝详情页的制作方法 编辑:程序博客网 时间:2024/05/17 02:00

网络分层 OSI模型opensystem interconnection

网络通信的通用框架,并且定义了每一层的数据处理方式

http://blog.csdn.net/hhcrazy12345/article/details/46682223

http://blog.csdn.net/a19881029/article/details/14002273

 

7.应用层

6.表示层

5.会话层

4.传输层

3.网络层

2.数据链路层

1.物理层

 

第七层 应用层

http协议 dns协议   当用户浏览器打开网址的时候,先通过域名解析服务dns找到对应的ip地址,再通过另外一种http协议下载页面内容。

SMTP邮件发送协议

POP3邮件接收协议

第六层 表示层

这里的表示指数据的表示。该层的主要功能 转换、压缩、加密。常用的加密协议是SSL secure socket layer 。加密协议并不一定工作在表示层。

第五层 会话层

提供创建、管理、终止会话的方法。

第四层 传输层

TCP/UDP

TCP Transmission Control Protocol 传输控制协议

面向连接的传输方式

UDP User Datagram Protocol 用户数据报协议

 

很多应用程序把数据交给TCP/UDP传输,通过端口来识别不同的应用程序。

第三层 网络层

网络层完成的是如何把数据从一个设备发送到另一个设备。三个最基本的功能:地址、路由、分段和重组。

最常用的IP协议:Ipv4和Ipv6. 使用不同位数的二进制数表示。

Ipv4:32位二进制数、点号分开的4个数,每个0-255

Ipv6:128位二进制数、冒号分开的8个16进制数,每个16位。

 

第二层 数据链路层

数据链路层关心的是如何把数据发送到本地网络中。

LAN 局域网、Ethernet以太网、令牌环网TokenRing 、802.11 wifi都是这一层的协议。通过MAC地址来确保数据被发送到正确的主机。

第一层 物理层

 

TCP/IP 分层

四层:应用层、传输层、互联网层、网络接口层。

在TCP/IP模型中并不包含物理层,另外,两个重要的协议ARP和RARP,地址解析协议和反向地址解析协议。在OSI模型中,一般位于数据链路层和网络层之间。在TCP/IP模型中,位于网络接口层。

 

 

发送方发送数据,数据从应用层 到物理层,层层往下,依次封装数据。

接收方接收数据,数据从物理层到应用层,层层往上,依次逆处理,解压数据。

 

HTTP请求报文格式:










三部分组成:请求行 、请求头部 、 请求正文

请求行:请求方法 、URL 、HTTP版本号

请求头部:键值对组成

请求正文:可选,比如GET方法就没有请求正文。

HTTP相应报文格式:



三个部分组成:状态行 + 相应头部+ 响应正文

状态行:协议版本+状态码+状态码描述

200—299:表示成功

300—399:资源重定向

400—499:客户端请求出错

500—599:服务器端出错

相应头部:键值对,表示附加信息

响应正文:

 

 

GET/POST:

GET 获取数据 ;POST提交数据

GET 参数直接写在URL里面url长度有限制 ;POST参数写在请求头部Header

GET安全性能低;POST安全性能高

 

URL/URI/URN:

URI;Uniform  Resource Identifier  统一资源标识;URI由URL和URN组成

URL;Uniform Resource Locator 统一资源定位;

URN;Uniform Resource Name 统一资源命名;

HTTP处理的是URL

 

HTTP请求在网络中的详细过程:

1.     浏览器解析这个URL,通过DNS域名解析服务器获取对应的IP地址,请求解析www.baidu.com对应的IP地址。

2.     浏览器通过IP地址和端口号,开始向Web服务器发送请求报文,包括请求行、请求头部、请求正文

3.     百度Web服务器可能是Apache、Tomcat、Nodejs服务器,收到请求,进入到后端部署好的应用,找到对应的请求处理,并返回相应报文。

4.     浏览器开始下载html文件和静态资源,同时使用缓存。

5.     浏览器根据html文件生成DOM Tree(只有结构没有样式);根据CSS文件生成CSSOM(样式表);DOM树和CSSOM结合生成渲染树RenderTree;浏览器根据渲染树开始渲染和展示;遇到script时会执行并阻塞渲染。

TCP三次握手:

1.     客户端发送请求报文 SYN=1同时表明自己的序号seq=x;

2.     服务端响应报文 SYN=1同时发送响应ack=x+1和自己的序号seq=y

3.     客户端再进行一次确认,SYN=0;发送自己的序号seq=x+1;响应ack=y+1

SYN置1就表示这是一个连接请求或连接接受报文

SYN全称 Synchronize Sequence Numbers同步序列编号

ACK全称 Acknowledgement Numbers 确认编号

Seq是序列号,连接以后传输数据用的

Ack是对收到的数据包的确认,值是等待接收的数据包的序列号