网络分层 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是对收到的数据包的确认,值是等待接收的数据包的序列号