如何理解TCP/IP协议?
如何理解TCP/IP协议?
一、是什么TCP/IP,传输控制协议/网际协议,是指能够在多个不同网络间实现信息传输的协议簇
TCP(传输控制协议)
一种面向连接的、可靠的、基于字节流的传输层通信协议
IP(网际协议)
用于封包交换数据网络的协议
TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇,
只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以通称为TCP/IP协议族(英语:TCP/IP Protocol Suite,或TCP/IP Protocols)
二、划分TCP/IP协议族按层次分别了五层体系或者四层体系
五层体系的协议结构是综合了 OSI 和 TCP/IP 优点的一种协议,包括应用层、传输层、网络层、数据链路层和物理层
五层协议的体系结构只是为介绍网络原理而设计的,实际应用还是 TCP/IP 四层体系结构,包括应用层、传输层、网络层(网际互联层)、网络接口层
如下图所示:
五层体 ...
为什么说HTTPS比HTTP安全? HTTPS是如何保证安全的?
为什么说HTTPS比HTTP安全? HTTPS是如何保证安全的?
一、安全特性在上篇文章中,我们了解到HTTP在通信过程中,存在以下问题:
通信使用明文(不加密),内容可能被窃听
不验证通信方的身份,因此有可能遭遇伪装
而HTTPS的出现正是解决这些问题,HTTPS是建立在SSL之上,其安全性由SSL来保证
在采用SSL后,HTTP就拥有了HTTPS的加密、证书和完整性保护这些功能
SSL(Secure Sockets Layer 安全套接字协议),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议
二、如何做SSL 的实现这些功能主要依赖于三种手段:
对称加密:采用协商的密钥对数据加密
非对称加密:实现身份认证和密钥协商
摘要算法:验证信息的完整性
数字签名:身份验证
对称加密对称加密指的是加密和解密使用的秘钥都是同一个,是对称的。只要保证了密钥的安全,那整个通信过程就可以说具有了机密性
非对称加密非对称加密,存在两个秘钥,一个叫公钥,一个叫私钥。两个秘钥是不同的,公钥可以公开给任何人使 ...
如何理解OSI七层模型?
如何理解OSI七层模型?
一、是什么OSI (Open System Interconnect)模型全称为开放式通信系统互连参考模型,是国际标准化组织 ( ISO ) 提出的一个试图使各种计算机在世界范围内互连为网络的标准框架
OSI 将计算机网络体系结构划分为七层,每一层实现各自的功能和协议,并完成与相邻层的接口通信。即每一层扮演固定的角色,互不打扰
二、划分OSI主要划分了七层,如下图所示:
应用层应用层位于 OSI 参考模型的第七层,其作用是通过应用程序间的交互来完成特定的网络应用
该层协议定义了应用进程之间的交互规则,通过不同的应用层协议为不同的网络应用提供服务。例如域名系统 DNS,支持万维网应用的 HTTP 协议,电子邮件系统采用的 SMTP 协议等
在应用层交互的数据单元我们称之为报文
表示层表示层的作用是使通信的应用程序能够解释交换数据的含义,其位于 OSI 参考模型的第六层,向上为应用层提供服务,向下接收来自会话层的服务
该层提供的服务主要包括数据压缩,数据加密以及数据描述,使应用程序不必担心在各台计算机中表示和存储的内部格式差异
会话层会话层就是负责建立、管理 ...
说说HTTP 常见的状态码有哪些,适用场景?
说说HTTP 常见的状态码有哪些,适用场景?
一、是什么HTTP状态码(英语:HTTP Status Code),用以表示网页服务器超文本传输协议响应状态的3位数字代码
它由 RFC 2616规范定义的,并得到 RFC 2518、RFC 2817、RFC 2295、RFC 2774与 RFC 4918等规范扩展
简单来讲,http状态码的作用是服务器告诉客户端当前请求响应的状态,通过状态码就能判断和分析服务器的运行状态
二、分类状态码第一位数字决定了不同的响应状态,有如下:
1 表示消息
2 表示成功
3 表示重定向
4 表示请求错误
5 表示服务器错误
1xx代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束
常见的有:
100(客户端继续发送请求,这是临时响应):这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应。服务器必须在请求完成后向客户端发送一个最终响应
101:服务器根据客户端的请求切换协议,主要用于websocket或http ...
什么是HTTP? HTTP 和 HTTPS 的区别?
什么是HTTP? HTTP 和 HTTPS 的区别?
一、HTTPHTTP (HyperText Transfer Protocol),即超文本运输协议,是实现网络通信的一种规范
在计算机和网络世界有,存在不同的协议,如广播协议、寻址协议、路由协议等等……
而HTTP是一个传输协议,即将数据由A传到B或将B传输到A,并且 A 与 B 之间能够存放很多第三方,如: A<=>X<=>Y<=>Z<=>B
传输的数据并不是计算机底层中的二进制包,而是完整的、有意义的数据,如HTML 文件, 图片文件, 查询结果等超文本,能够被上层应用识别
在实际应用中,HTTP常被用于在Web浏览器和网站服务器之间传递信息,以明文方式发送内容,不提供任何方式的数据加密
特点如下:
支持客户/服务器模式
简单快速:客户向服务器请求服务时,只需传送请求方法和路径。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快
灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content ...
HTTP 常见的请求头有哪些? 作用?
HTTP 常见的请求头有哪些? 作用?
一、是什么HTTP头字段(HTTP header fields),是指在超文本传输协议(HTTP)的请求和响应消息中的消息头部分
它们定义了一个超文本传输协议事务中的操作参数
HTTP头部字段可以自己根据需要定义,因此可能在 Web 服务器和浏览器上发现非标准的头字段
下面是一个HTTP请求的请求头:
123456789101112GET /home.html HTTP/1.1Host: developer.mozilla.orgUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: en-US,en;q=0.5Accept-Encoding: gzip, deflate, brReferer: https://developer.mozill ...
GET 和 POST 的区别?
GET 和 POST 的区别?
一、是什么GET和POST,两者是HTTP协议中发送请求的方法
GETGET方法请求一个指定资源的表示形式,使用GET的请求应该只被用于获取数据
POSTPOST方法用于将实体提交到指定的资源,通常导致在服务器上的状态变化或副作用
本质上都是TCP链接,并无差别
但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中会体现出一些区别
二、区别从w3schools得到的标准答案的区别如下:
GET在浏览器回退时是无害的,而POST会再次提交请求。
GET产生的URL地址可以被Bookmark,而POST不可以。
GET请求会被浏览器主动cache,而POST不会,除非手动设置。
GET请求只能进行url编码,而POST支持多种编码方式。
GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
GET请求在URL中传送的参数是有长度限制的,而POST没有。
对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
GET ...
TCP为什么需要三次握手和四次挥手?
TCP为什么需要三次握手和四次挥手?
一、三次握手三次握手(Three-way Handshake)其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包
主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备
过程如下:
第一次握手:客户端给服务端发一个 SYN 报文,并指明客户端的初始化序列号 ISN(c),此时客户端处于 SYN_SENT 状态
第二次握手:服务器收到客户端的 SYN 报文之后,会以自己的 SYN 报文作为应答,为了确认客户端的 SYN,将客户端的 ISN+1作为ACK的值,此时服务器处于 SYN_RCVD 的状态
第三次握手:客户端收到 SYN 报文之后,会发送一个 ACK 报文,值为服务器的ISN+1。此时客户端处于 ESTABLISHED 状态。服务器收到 ACK 报文之后,也处于 ESTABLISHED 状态,此时,双方已建立起了连接
上述每一次握手的作用如下:
第一次握手:客户端发送网络包,服务端收到了这样服务端就能得出结论:客户端的发送能力、服务端的接收能力是正常的。
第二次握手 ...
DNS协议 是什么?说说DNS 完整的查询过程?
DNS协议 是什么?说说DNS 完整的查询过程?
一、是什么DNS(Domain Names System),域名系统,是互联网一项服务,是进行域名和与之相对应的 IP 地址进行转换的服务器
简单来讲,DNS相当于一个翻译官,负责将域名翻译成ip地址
IP 地址:一长串能够唯一地标记网络上的计算机的数字
域名:是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识
二、域名域名是一个具有层次的结构,从上到下一次为根域名、顶级域名、二级域名、三级域名…
例如www.xxx.com,www为三级域名、xxx为二级域名、com为顶级域名,系统为用户做了兼容,域名末尾的根域名.一般不需要输入
在域名的每一层都会有一个域名服务器,如下图:
除此之外,还有电脑默认的本地域名服务器
三、查询方式DNS 查询的方式有两种:
递归查询:如果 A 请求 B,那么 B 作为请求的接收者一定要给 A 想要的答案
迭代查询:如果接收者 B 没有请求者 A 所需要的准确内容,接收者 B 将告诉请求者 A,如何去获得这个内容,但 ...
如何理解CDN?说说实现原理?
如何理解CDN?说说实现原理?
一、是什么CDN (全称 Content Delivery Network),即内容分发网络
构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN 的关键技术主要有内容存储和分发技术
简单来讲,CDN就是根据用户位置分配最近的资源
于是,用户在上网的时候不用直接访问源站,而是访问离他“最近的”一个 CDN 节点,术语叫边缘节点,其实就是缓存了源站内容的代理服务器。如下图:
二、原理分析在没有应用CDN时,我们使用域名访问某一个站点时的路径为
用户提交域名→浏览器对域名进行解释→DNS 解析得到目的主机的IP地址→根据IP地址访问发出请求→得到请求数据并回复
应用CDN后,DNS 返回的不再是 IP 地址,而是一个CNAME(Canonical Name ) 别名记录,指向CDN的全局负载均衡
CNAME实际上在域名解析的过程中承担了中间人(或者说代理)的角色,这是CDN实现的关键
负载均衡系统由于没有返回IP地 ...