赞
踩
1、OSI七层从下往上依次是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
2、TCP四次从下往上依次是:网络接口层、网络层、传输层、应用层
特点:
应用层协议:HTTP、FTP、SMTP、POP3
传输层协议:TCP、UDP
网络处协议:IP/IPv6
网络接口层协议:ARP地址解析协议
层与层之间相互独立又相互依靠
上层依赖于下层、下层为上层提供服务
TCP/IP四层模型是 OSI 七层的简化版,成为国际标准
UDP | TCP | |
---|---|---|
是否连接 | 无连接 | 面向连接 |
是否可靠 | 不可靠传输、不使用流量控制和拥塞控制 | 可靠传输、使用流量控制和拥塞控制 |
连接对象个数 | 支持一对一,一对多,多对一和多对多交互通信 | 只能是一对一通信 |
传输方式 | 面向报文 | 面向字节流 |
首部开销 | 首部开销小,仅 8 字节 | 首部最小 20 字节,最大 60 字节 |
使用场景 | 适用于实时应用(IP电话、视频会议、直播) | 适用于要求可靠传输的应用,例如文件传输 |
1、校验和
数据传输时,将数据段都当做一个 16 位的整数,将这些整数加起来,并且前面的进位不能丢弃,补在后面,然后取反,得到校验和
2、序列号
TCP传输时,将每个字节的数据都进行了编号,这就是序列号。序列号的作用不仅仅是应答作用,有了序列号能够将接收到的数据根据序列号进行排序,并且去掉重复的数据
3、确认应答
TCP传输过程中,每次接收方接收到数据后,都会对传输方进行确认应答,也就是发送ACK报文,这个ACK报文中带有对应的确认序列号,告诉发送方,接受了哪些数据,下一次数据从哪里传
4、超时重传
在进行TCP传输时,由于存在确认应答与序列号机制,也就是说发送方发送一部分数据后,都会等待接收方发送的ACK报文,并解析ACK报文,判断数据是否传输成功。如果发送方发送完数据后,迟迟都没有节后到接收方传来的ACK报文,那么就对刚刚发送的数据进行重发。
5、连接管理
就是指 三次握手、四次挥手的过程
6、流量控制
如果发送方的发送数据太快,会导致接收方的接收缓冲区填满了,这时候继续传输数据,就会造成大量的丢包,进而引起丢包重传等等一系列问题,TCP支持根据接收端的处理能留来决定发送端的发送速度,这就是流量控制机制
7、拥塞控制
TCP传输过程中一开始就发送大量数据,如果当时网络非常拥堵,可能会造成拥堵加剧。所以TCP引入了 慢启动机制,在开始发送数据的时候,先发少量的数据探探路
1、滑动窗口
该机制允许发送在停止并等待确认前连续发送多个分组,而不必每发送一个分组就停下来等待确认,从而增加数据传输的速率,提高应用的吞吐量。已发送并且已经确认的包。已发送但是没有确认的包。未发送但是可以发送的包。不允许被发送的包。滑动窗口协议的基本工作流程就是由接收方通告窗口的大小。
2、快重传(高速重发控制)
如果出现了丢包,需要进行重传。一般分为两种情况
情况一:数据包已经抵达,ACK被丢了。这种情况下,部分ACK丢了并不影响,因为可以通过后续的ACK进行确认
情况二: 数据包直接丢了。发送端会连续收到多个相同的ACK确认,发送端立即将对应丢失的数据重传
3、延迟应答
如果接受数据的主机立刻返回ACK应答,这时候返回的窗口大小可能比较小。
假设接收端缓冲区为1M,一次收到了512K的数据;如果立刻应答,返回的窗口就是512K;
但实际上可能处理端处理速度很快,10ms之内就把512K的数据从缓存区消费掉了;
在这种情况下,接收端处理还远没有达到自己的极限,即使窗口再放大一些,也能处理过来;
如果接收端稍微等一会在应答,比如等待200ms再应答,那么这个时候返回的窗口大小就是1M;
窗口越大,网络吞吐量就越大,传输效率就越高;我们的目标是在保证网络不拥塞的情况下尽量提高传输效率。
4、捎带应答
在延迟应答的基础上,很多情况下,客户端服务器在应用层也是一发一收的。这时候常常采用捎带应答的方式来提高效率,而ACK响应常常伴随着数据报文共同传输。如:三次握手。
网络拥塞现象是指到达通信网络中某一部分的分组数据量过多,使得该部分网络来不及处理,以致引起这部分乃至整个网络性能下降的现象,验证时甚至会导致网络通信业务陷入停顿,即出现死锁现象。
拥塞控制是处理网络拥塞现象的一种机制。
1、慢启动
2、拥塞避免
3、快速重传
4、快速恢复
1、IP的基本特点
· ip地址由四段组成,每个字段是一个字节,8位,最大值是 255
· ip地址由两部分组成,即网络地址和主机地址。网络地址表示其属于互联网的哪一个网络,主机地址表示其属于该网络中的哪一台主机。
2、A、B、C 三类 和 D、E这五类
A类:(1.0.0.0-126.0.0.0)一般用于大型网络。 主机号 占 24位
B类:(128.0.0.0-191.255.0.0)一般用于中等规模网络。 主机号 占 16位
C类:(192.0.0.0-223.255.255.0)一般用于小型网络。 主机号 占 8位
D类:是多播地址,地址的网络号取值于224~239之间,一般用于多路广播用户。
E类:是保留地址。地址的网络号取值于240~255之间。
1、http1.1
持久连接
请求管道化
增加缓存处理(新的字段如cache-control)
增加Host字段、支持断点传输
2、http2.0
二进制分帧
多路复用(连接共享)
头部压缩
服务器推送
1、HTTPS协议需要到 CA 申请证书,需要一定费用
2、HTTP 是超文本传输协议,信息是明文传输
3、HTTPS 则是具有安全性的 SSL 加密传输协议
4、HTTP 和 HTTPS使用的是完全不同的连接方式,用的端口不一样,HTTP:80 HTTPS:443
5、HTTP 的连接很简单,是无状态的,HTTPS 协议是由 SSL + HTTP 协议构建的可进行加密传输、身份认证的网络协议,更安全
1、对称加密:
加密和解密使用用一个密钥的方式,这种方式存在的最大问题就是密钥发送问题,即如何安全地将密钥发给对方
2、非对称加密:
即公钥和私钥,公钥可以随意发布,但私钥只有自己知道,发送密文的一方使用对方的公钥进行加密处理,对方接受到加密信息后,使用自己的私钥进行解密。
3、非对称加密可以保证安全性,但是速度比较慢,我们可以通过对称加密传送消息,对称加密的密钥通过非对称加密方式发送出去
1××:请求处理中,请求已被接受,正在处理
2××:请求成功,请求被成功处理 200 OK
3××:重定向,要完成请求必须进行进一步处理 301:永久性转移 302 :暂时性转移 304:已缓存
4××:客户端错误,请求不合法 400:Bad Request,请求有语法问题 403 :拒绝请求 404 :客户端所访问的页面不存在
5××:服务端错误,服务器不能处理合法请求 500:服务器内部错误 503 服务不可用
1、GET 一般用来从服务器上获取资源,POST一般用来创建资源
2、POST 安全性更高,因为GET请求提交的数据将敏文出现在URL上,而POST请求参数则被包装在请求体中,相对更安全
3、GET请求的长度受限于浏览器或服务器对 URL长度的限制,允许发送的数据量比较小,而POST请求则是没有大小限制
1、在浏览器中输入 www.baidu.com 域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有就先调用这个 IP 地址映射,完成域名解析
2、如果hosts里没有这个域名的映射,则查找本地 DNS 解析器缓存,是否有这个网址映射关系,如果有直接返回,完成域名解析
3、如果hosts与本地 DNS 解析器缓存都没有相应的网址映射关系,首先会找 TCP/IP 参数中设置的 首选 DNS 服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。
4、如果要查询的域名,不由本地 DNS 服务器区域解析,但该服务器已缓存了此网站映射关系,则调用这个IP地址映射,完成域名解析,次解析不具有权威性。
5、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发送至 13 台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并返回一个负责该顶级域名服务器的一个ip,本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台服务器收到请求后,如果自己无法解析,他就会找一个管理.com域的下一级DNS服务器地址(baidu.com)给本地DNS服务器,当本地DNS服务器收到这个地址后,就会找baidu.com域服务器,重复上面的动作,进行查询,直至找到baidu.com主机
1、域名解析 -> 建立TCP连接(三次握手) -> 发起 http 请求 -> 服务器响应 http 请求,浏览器得到html代码 -> 浏览器解析 html代码,并请求html代码中的资源(如js、css、图片等) -> 浏览器对页面进行渲染呈现给用户
由于HTTP协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识具体的用户,这个机制就是Session.
思考一下服务端如何识别特定的客户?这个时候Cookie就登场了。每次HTTP请求的时候,客户端都会发送相应的Cookie信息到服务端。
1、session 在服务器端,cookie在客户端(浏览器)
2、session 默认被存储在服务器的一个文件里(不是内容)
3、session 的运行依赖 session id,而 session id 是存在cookie 中的,也就是说,如果浏览器禁用了 cookie ,同时 session 也会失效(但是可以通过其他方式实现,比如在url中传递session id)
4、session 可以放在文件、数据库、或内存中都可以
5、用于验证这种场合一般会用 session
1、DNS查询优化
2、客户端缓存
3、优化TCP连接
4、避免重定向
5、网络边缘的缓存
6、条件缓存
7、压缩和代码极简化
8、图片优化
整理不易 你的点赞、关注是对我莫大的鼓励
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。