OSI七层模型
OSI七层协议模型主要是:应用层(Application)、表示层(Presentation)、会话层
(Session)、传输层(Transport)、网络层(Network)、数据链路层(Data Link
)、物理层(Physical)。
应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet
表示层 数据格式化,代码转换,数据加密 没有协议
会话层 解除或建立与别的接点的联系 没有协议
传输层 提供端对端的接口 TCP,UDP
网络层 为数据包选择路由 IP,ICMP,RIP,OSPF,BGP,IGMP
数据链路层 传输有地址的帧以及错误检测功能 SLIP,CSLIP,PPP,ARP,RARP,
MTU
物理层 以二进制数据形式在物理媒体上传输数据 ISO2110,IEEE802,IEEE802.2
在OSI七层模型中ARP属于数据链路层, 在TCP/IP模型中ARP属于网络层
五层体系结构
五层体系结构包括:应用层、运输层、网络层、数据链路层和物理层。
网际层协议:包括:IP协议、ICMP协议、ARP协议、RARP协议。
传输层协议:TCP协议、UDP协议。
应用层协议:FTP、Telnet、SMTP、HTTP、RIP、NFS、DNS
ARP协议
ARP协议,全称“Address Resolution Protocol”,中文名是地址解析协议,使用ARP协 议可实现通过IP地址获得对应主机的物理地址(MAC地址)
ICMP协议
ICMP:一个新搭建好的网络,往往需要先进行一个简单的测试,来验证网络是否畅通;但是IP协议并不提供可靠传输。如果丢包了,IP协议并不能通知传输层是否丢包以及丢包的原因。所以我们就需要一种协议来完成这样的功能–ICMP协议。
HTTP过程
1.对www.baidu.com这个网址进行DNS域名解析(将主机名和域名转换为IP地址),得到对应的IP地址
2.根据这个IP,找到对应的服务器,发起TCP的三次握手
3.建立TCP连接后发起HTTP请求
4.服务器响应HTTP请求,浏览器得到html代码。Responds
5.浏览器解析html代码,并请求html代码中的资源(如js、css图片等)(先得到html代码,才能去找这些资源)parsing
6.浏览器对页面进行渲染呈现给用户
HTTP请求过程
建立连接完毕以后客户端会发送响应给服务端
服务端接受请求并且做出响应发送给客户端
客户端收到响应并且解析响应给用户
HTTPS过程
客户端发送请求到服务器端
服务器端返回证书和公开密钥,公开密钥作为证书的一部分而存在
客户端验证证书和公开密钥的有效性,如果有效,则生成共享密钥并使用公开密钥加 密发送到服务器端
服务器端使用私有密钥解密数据,并使用收到的共享密钥加密数据,发送到客户端
客户端使用共享密钥解密数据
SSL加密建立……….
DNS过程
1.用户主机上运行着DNS的客户端,就是我们的PC机或者手机客户端运行着DNS客户端 了
2.浏览器将接收到的url中抽取出域名字段,就是访问的主机名,, 并将这个主机名传送给 DNS应用的客户端。
3.DNS客户机端向DNS服务器端发送一份查询报文,报文中包含着要访问的主机名字段 (中间包括一系列缓存查询以及分布式DNS集群的工作)
4.该DNS客户机最终会收到一份回答报文,其中包含有该主机名对应的IP地址。
5.一旦该浏览器收到来自DNS的IP地址,就可以向该IP地址定位的HTTP服务器发起TCP 连接。
TCP流量控制、拥塞控制
什么是流量控制?流量控制的目的?
如果发送者发送数据过快,接收者来不及接收,那么就会有分组丢失。为了避免分组 丢失,控制发送者的发送速度,使得接收者来得及接收,这就是流量控制。
流量控制的根本目的是防止分组丢失,它是构成TCP可靠性的一方面。
如何实现流量控制?
由滑动窗口协议(连续ARQ协议)实现。滑动窗口协议既保证了分组无差错、有序接收,也实现了流量控制。主要的方式就是接收方返回的 ACK 中会包含自己的接收窗口的大小,并且利用大小来控制发送方的数据发送。
流量控制引发的死锁?怎么避免死锁的发生?
当发送者收到了一个窗口为0的应答,发送者便停止发送,等待接收者的下一个应答。但是如果这个窗口不为0的应答在传输过程丢失,发送者一直等待下去,而接收者以为 发送者已经收到该应答,等待接收新数据,这样双方就相互等待,从而产生死锁。 为了避免流量控制引发的死锁,TCP使用了持续计时器。每当发送者收到一个零窗口的应答后就启动该计时器。时间一到便主动发送报文询问接收者的窗口大小。若接收者仍然返回零窗口,则重置该计时器继续等待;若窗口不为0,则表示应答报文丢失了,此时重置发送窗口后开始发送,这样就避免了死锁的产生。
拥塞控制和流量控制的区别
拥塞控制:拥塞控制是作用于网络的,它是防止过多的数据注入到网络中,避免出现 网络负载过大的情况;常用的方法就是:( 1 )慢开始、拥塞避免( 2 )快重传、快恢复。
流量控制:流量控制是作用于接收者的,它是控制发送者的发送速度从而使接收者来得及接收,防止分组丢失的。
HTTP的报文格式
HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度
是不确定的。HTTP有两类报文:请求报文和响应报文。
请求报文
一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成。
1.请求行,请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。例如,GET /index.html HTTP/1.1。
2.请求头部,请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。
请求头部通知服务器有关于客户端请求的信息,典型的请求头有:
3.空行,最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再
有请求头。对于一个完整的http请求来说空行是必须的,否则服务器会认为本次请求
的数据尚未完全发送到服务器,处于等待状态。
4.请求数据,请求数据不在GET方法中使用,而是在POST方法中使用。
Http中 header主要来存放cookie,token等信息的 body主要用来存放post的一些数据