声明:供自己学习查看,如有侵权麻烦联系删除。
http与https
基础概念相关
http:超文本传输协议,目的是保证客户段与服务器之间的通信;工作方式是客户端与服务器之间的请求-应答协议。
http请求报文主要包括请求行、请求头部以及请求的数据(实体)三部分
https 在http 的基础下加入 SSL(安全传输协议),h在http和TCP中间加上一层加密层。加密算法功能:
内容加密:采用混合加密技术,中间者无法直接查看明文内容
验证身份:通过证书认证客户端访问的是自己的服务器
保护数据完整性:防止传输的内容被中间人冒充或者篡改
http与https区别::1、http是超文本传输协议,信息是明文传输,https则是具有安全性的SSL加密传输协议;2、不同的连接方式,端口也不同,http端口80,https是443; 3、https协议需要到ca申请证书可能会需要一定费用。4、http无状态,https可以选择加密传输。
Web服务器相关
http常用请求头部(详见Xmind)
cache-control希望对缓存内容进行的控制;
http的keep-alive:http请求头Connection:keep-alive,长连接。并行连接:所谓并行连接(multiple connections),其实就是并发的短连接。
http常用方法
1、GET方法
GET方法用于使用给定的URI从给定服务器中检索信息,即从指定资源中请求数据。使用GET方法的请求应该只是检索数据,并且不应对数据产生其他影响。
在GET请求的URL中发送查询字符串(名称/值对),需要这样写:
1 /test/demo_form.php?name1=value1&name2=value2
GET请求是可以缓存的,我们可以从浏览器历史记录中查找到GET请求,还可以把它收藏到书签中;且GET请求有长度限制,仅用于请求数据(不修改)。
注:因GET请求的不安全性,在处理敏感数据时,绝不可以使用GET请求。
2、POST方法
POST方法用于将数据发送到服务器以创建或更新资源,它要求服务器确认请求中包含的内容作为由URI区分的Web资源的另一个下属。
POST请求永远不会被缓存,且对数据长度没有限制;我们无法从浏览器历史记录中查找到POST请求。
3、PUT方法
PUT方法用于将数据发送到服务器以创建或更新资源,它可以用上传的内容替换目标资源中的所有当前内容。它会将包含的元素放在所提供的URI下,如果URI指示的是当前资源,则会被改变。如果URI未指示当前资源,则服务器可以使用该URI创建资源。
4、DELETE方法
DELETE方法用来删除指定的资源,它会删除URI给出的目标资源的所有当前内容。
方法post与get的区别总结:
GET请求只能进行url编码,而POST支持多种编码方式。GET参数通过URL传递,POST放在Request body中。即GET更不安全,参数直接暴露在URL上,不能用来传递敏感信息。
GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。GET请求在URL中传送的参数是有长度限制的,而POST没有。
对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
Cookie与session
Cookie(通过客户端记录信息确定用户身份):是一小段文本信息维护客服端信息,服务器给客户端的身份证,以文本的格式存在浏览器上、存储量有限。
Session(通过在服务器记录确定身份)存储在服务器端保存用户数据,可以无限量存储多个变量,比cookie安全,负责访问者与网站之间的交互,http请求时,响应时会生成session ID并通过响应发送到浏览器,当浏览器第二次请求时会把前一次的session ID带上,一并发送到服务器端。
联系:session ID存在cookie里
区别:存储位置不同,cookie客户端,session在服务器端,cookie可以保存的数据类型有限,session会比较多。
输入一个网址到后会发生什么(或XMind)
输入网址—DNS域名解析—建立TCP连接—发送HTTP请求—服务器处理并返回结果—浏览器生成页面
域名解析:先查找本地host文件,如果有则跳过查询直接访问对应网站的ip地址,如果无则由本地dns服务器向根dns服务器发送查询请求,并逐级向下最后查询到具体的网址ip。
建立tcp连接:三次握手(客户端向服务器发送带有syn标识的数据包、服务端返回ack/syn数据包、客户端发送ack数据包)确保建立连接。
发送http请求:发送请求报文(报文首部、空行、主体),报文首部包含请求行和首部信息,十分重要。
服务器处理:如果是首次访问则直接返回页面资源,非首次则判断缓存文件是否需要更新,返回响应报文和相关文件
浏览器生成页面:先解析html、渲染布局(渲染器进程的核心工作是将 HTML,CSS 和 JavaScript 转换为用户可以与之交互的网页)。
DNS解析的全过程
DNS是应用层协议,事实上他是为其他应用层协议工作的,包括不限于HTTP和SMTP以及FTP,用于将用户提供的主机名解析为ip地址。
具体过程如下:
用于将用户提供的主机名解析为ip地址
- 浏览器从接收到的url中抽取出域名地址,将域名传给DNS应用的客户端
- 检查浏览器缓存、本地hosts文件是否有这个网址的映射,如果有,就调用这个IP地址映射
- 如果没有,则查找本地DNS解析器缓存是否有这个网址的映射,如果有,返回映射
- 如果没有,则向DNS服务器提出查询请求
4.服务器接收到查询时,查询本地配置区域资源,查到就返回结果
5.如果查不到,但服务器缓存了此网址映射关系,返回查找结果 - 如果没有缓存,就继续间请求转发至上一级DNS服务器进行查询。最终将解析结果依次返回本地DNS服务器,本地DNS服务器在返回给客户端,并把这个映射存到服务器的缓存中
https的三次握手
第一步: 客户端向服务器发送https请求,服务器将公钥以证书的形式发送到客户端(服务端存放私钥和公钥)第二步:浏览器生成一串随机数,然后用公钥对随机数和hash签名进行加密,加密后发送给服务器;服务器用私钥解密,取出字符串和hash签名再通过私钥加密后发送给客户端。第三步:客户端用公钥对密文进行解密并判断是否被篡改,如果没有篡改,客户端向服务器端发出信息,协商后面的数据通讯将使用生成的随机字符串做为秘钥进行对称密钥,同时通知服务器握手结束。服务器接受到信息后,响应协商的加密秘钥并通知客户端握手结束。
http状态码
401拒绝访问、403禁止访问、404页面丢失、405方法不被允许、406客户端不接受请求页面类型、450未执行请求的文件操作、500服务器错误、204无内容。
TCP/IP
模型
OSI模型:应用层(http/https)、表示层、会话层、传输层(TCP/UDP)、网络层、数据链路层、物理层
TCP/IP模型:应用层、传输层、网络层、网络接口层
基础概念相关
TCP与UDP
TCP:传输控制协议,提供面向连接的可靠的字节流传输服务。
UDP:用户数据报协议,面向无连接,面向数据报的不可靠传输协议。
区别:特点的区别,用的协议不同,报头不同。
TCP的三次握手,四次挥手
三次握手:1、建立连接时,客户端发送SYN包到服务器,等待服务器确认;2、服务器收到SYN包时,确认客户端的SYN,同时自己也发送自己的一个SYN包,形成SYN+ACK(响应)包返回客户端;3、客户端收到两个包之后,向服务器发送确认,完成三次握手,建立连接;
四次挥手:1、断开时,客户端发送一个FIN包,用来关闭客户端到服务端的数据传送2、服务端收到后,发送一个ACK包确认收到3、再发送一个FIN包关闭服务器到客户端的数据传输4、客户端收到FIN后发送一个ACK包确认,完成四次挥手,断开连接。
为什么建立连接协议是三次握手,而关闭连接却是四次握手呢?
关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可能未必会马上会关闭,你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了,所以关闭时的ACK报文和FIN报文多数情况下都是分开发送。
为什么不能用两次握手进行连接?
3次握手完成两个重要的功能,既要双方做好发送数据的准备工作(双方都知道彼此已准备好),也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认。把三次握手改成仅需要两次握手,可能会发生死锁。
TCP的长短连接
短连接:每进行一次HTTP操作,就建立一次连接,任务结束时就中断连接。优点:存在的连接都是有用的连接,管理起来简单
长连接:即使完成任务后,TCP连接也不会关闭,客户端再次访问时会继续使用这条连接,实现长连接需要客户端和服务端都支持长连接。优点:不用重复建议连接,但客户端连接越多,服务端压力也就越大(需要保活功能,测试长连接存活状况,如果没有响应就会关闭连接)。
TCP连接最多能同时发多少个请求。
1 如果tcp连接保持长连接,Connection:keep-alive && http(s) 1.1 只要在tcp连接(默认两小时)不断开,可以一直串行发送数量无上限。2 如果tcp连接不保持长连接,Connection:close 只能发一次请求。
连续发送三个包,tcp与UDP服务器分别收到多少个?
我的理解如果我们已经TCP服务器进行了连接,那么会收到三个包,如果没有应该是零。UDP是0到3有可能全部收到,有可能会发生丢失。
TCP传输机制(怎么确保可靠性,Xmind)
其他
怎么知道远程服务器上的某一个服务是否在运行/怎么知道客户端是连接着服务器上的哪个服务?
最直接方法是Ping服务的端口号,也可以在服务器本地安装集中管理平台(可IP管理的KVM设备)这样即使网络出现网络问题也可以通过管理平台直接登录到主机的桌面进行操作。
Socket是什么呢?
Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议
网页卡顿排查:
网络、本地DNS配置、网站自身原因、服务器原因、路由连接问题。
localhost地址是127.0.0.1是本机地址
Ping 127.0.0.1,127.0.0.1是本地循环地址,如果本地址无法Ping通,则表明本地机TCP/IP协议不能正常工作。
网络检错顺序
1.ping 127.0.0.1 先检查TCP/IP协议栈是否正常。 2.ping 本地ip 检查你网卡是否工作正常。 3.ping 网关地址 检查和网关连接性。 4.ping 远程网站 检查远程连接。
ARP协议:地址解析协议
MAC地址:网络中每台设备都有一个唯一的网络标识,这个地址叫MAC地址或网卡地址,由网络设备制造商生产时写在硬件内部。
其作用是在以太网环境中,数据的传输所依懒的是MAC地址而非IP地址,而将已知IP地址转换为MAC地址的工作是由ARP协议来完成的。在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
网友评论