如何防止网站被采集,关于建设门户网站,腾讯企业网页设计,网站制作包括哪些计算机网络八股文整理
一#xff1a;网络模型
1#xff1a;网络osi模型和tcp/ip模型分别介绍一下 osi模型是国际标准的网络模型#xff0c;它由七层组成#xff0c;从上到下分别是#xff1a;应用层#xff0c;表示层#xff0c;会话层#xff0c;传输层#xff0c;…计算机网络八股文整理
一网络模型
1网络osi模型和tcp/ip模型分别介绍一下 osi模型是国际标准的网络模型它由七层组成从上到下分别是应用层表示层会话层传输层网络层数据链路层物理层而因为osi网络模型制定前因特网已经出现因特网使用的是tcp/ip模型它由四层组成分别是应用层传输层网络层网络接口层各层职责分明下层负责给上提供服务 拓展1为什么要分层 就像是我们编写后端程序一样我们会进行分层可以使每一层的职责分明比如mapper层专门进行数据库操作一样。 分层有2点好处 1各层相互独立 2提高灵活性和可替代性比如修改每一层对其他层的影响非常小与我们平时开发程序的高内聚低耦合的原则可以对应上 2tcpip分别属于哪个层 tcp- 传输层 ip - 网络层 拓展每个层都有哪些协议 应用层httphttpsdnsftp,smtp (用于发送电子邮件) 传输层tcpudp 网络层ipicmp互联网控制消息协议用于网络诊断Arp协议根据ip地址寻找mac地址rarp根据 网络接口层mac 二http
1从输入url到页面显示发送了什么* * * 1首先在搜索栏输入一串网址 2浏览器根据dns协议去本地的dns服务器查询域名对应的ip如果本地dns服务器没有换存就去访问根dns服务器由根dns服务器之路去访问顶级域dns服务器再由顶级域dns服务器指路去访问对应的权威dns服务器最后查询到返回域名对应的ip并将映射关系存入本地dns服务器 4然后根据IP地址和端口号向目标服务器发起tcp连接请求也就是tcp三次握手建立连接 5然后在连接上发送http报文请求请求获取网页内容 6服务器处理请求返回网页数据 7浏览器解析响应数据将响应体中的html页面渲染成网页的样式然后再根据html中的url如图片继续发送请求获取资源直到网页完全加载完毕 8不通信时关闭tcp连接 2http报文有哪些部分 http请求报文有请求行请求头请求体 http响应报文有状态行响应头响应体 拓展1请求头中常见的字段 1accept可以接收的报文类型 2connection连接类型keep-alive长连接 3accept-encoding能够接受的编码格式 拓展2http中常见的状态码 以1开头的表示一种中间状态 以2开头的表示请求成功 以3开头的表示请求重定向301永久重定向302临时重定向 以4开头的表示客户端出现问题如404是客户端请求的资源不存在 以5开头的表示服务端出现问题 联想304状态码缓存重定向 对于多次请求会返回同样的资源会采用http缓存这样能加快访问速度 http缓存有两种实现方式强制缓存和协商缓存 强制缓存强制的含义是由浏览器来控制是否使用本地缓存通过两个字段一个是exprie一个是cache-control都是用来设置过期时间exprie是绝对时间cache-control是相对时间cache-control的优先级会更高这样发送请求时会先判断缓存有没有过期如果没有就直接使用缓存 协商缓存是服务端告诉客户端是否使用缓存有两种方式一种是最后修改时间一种是唯一标识 最后修改时间的逻辑是当本地缓存过期时会向服务端发送请求携带上一次最后的修改时间服务端会比对如果服务端资源最后修改时间较新会返回200同时返回服务端资源如果旧那么就返回304标识让客户端查看浏览器的缓存 唯一标识的逻辑时比对上一次的唯一标识如果改变就返回新资源没有返回304’ 拓展3502和504状态码的区别 502网关请求收到无效的响应 bad-gateway 504网关请求超时 3http请求有哪些类型 get获取资源 put更新资源 post提交数据 delete删除资源 head类似于get请求获取资源的头部信息 拓展1get和post的使用场景他们的区别 根据rfc规范get通常原来获取指定的资源post用来提交数据 区别get的参数一般都写在url中url有长度的限制post的参数一般是实体写在请求体中 get是安全和幂等的post不是安全和幂等的 注意在具体的开发中get也可以来提交数据post也可以获取数据因为rfc只是规范不是强制的只是我们一般按照规范来 4http长连接 http是基于tcp传输协议实现的进行数据传输前需要建立连接 在http1中每一次请求响应都要建立一个连接浪费资源且影响性能。 在http1.1中使用了长连接可以在请求字段connection设置为keep-alive这就是设置长连接一个连接可以接受多个请求响应 5http默认的端口是什么 http默认的端口的80https默认的端口是443 6http1.1怎么对请求拆包的具体说说怎么拆的 服务端收到http请求后主要是根据请求中的content-length来进行拆包content-length是内容的长度服务器会根据内容的长度来读取对应长度的内容这样避免了内容的丢失 7http为什么不安全 1http是明文传输通信过程中会被窃听 2http不进行身份验证有冒充风险 3http没有校验机制内容容易被篡改 8http和https的区别 https在http和tcp层之间加入了ssl/tls协议解决了http不安全的问题 https在tcp三次握手建立连接之后还会进行ssl/tls四次握手才能进行通讯 http默认的端口是80https默认的端口是443 拓展1https怎么解决了http的不安全的问题 http不安全的问题有三点 1窃听风险 2篡改风险 3冒充风险 基于三个风险提供解决方案 1加密通信混合加密非对称加密和对称加密 2摘要算法加上数字签名 3身份验证ca数字证书 联想1讲一下非对称加密算法和对称加密算法 对称加密算法只有一把密钥密文提供这把密钥加密和解密 非对称加密两把密钥一把公钥一把私钥可以公钥加密私钥解密也可以公钥加密私钥解密私钥是绝对不会被泄露的 对于两种算法对称加密的传输性能更好所以我们使用对称加密进行会话中的数据传递但是密钥如何分发给客户端和服务端使不被窃取所以我们使用非对称加密算法传递会话密钥客户端持有公钥将会话密钥加密只有服务端的私钥才能解密获得会话密钥后客户端和服务端使用会话密钥进行通信 联想2讲一下摘要算法和数字签名 因为我们发送的报文有可能会被篡改所以我们要进行验证可以使用摘要算法摘要算法将要发送的内容和内容对应的经过hash算法加密hash值一起发送接收方接收后将内容转成hash值与发送过来的hash值进行对比如果一致说明内容没有被串改这就是摘要算法但是如果hash值和内容都被串改了怎么办呢所以我们使用数字签名算法是使用非对称加密算法通过私钥加密公钥解密来保证内容不会被冒充 联想3讲一下数字证书 之前的加密通信是基于公私钥来传递会话密钥的如果中间人伪造一对公私钥也会造成安全风险所以要进行身份验证也就是利用数字证书利用数字证书来确定服务端的身份数字证书是由ca数字证书认证机构发放的具体的流程是服务端申请数字证书将公钥放入数字证书中ca通过ca的密钥对服务端公钥进行加密然后发送给客户端客户端确定数字证书的合法性然后通过ca的公钥进行解密获取服务端提供的公钥 9https的握手过程说一下 https的握手即tls的握手传统的tls的握手是基于ras算法来进行密钥交换的进行四次握手具体流程如下 1客户端发送client-hello tls的协议版本 携带客户端支持的密钥套件 客户端产生的随机数 2服务端发送server-hello 确认密钥套件 确认tls协议版本 携带服务端产生的随机数 发送含有公钥的数字证书 3第三次握手 客户端取出数字证书验证合法性然后解密出公钥 发送一个使用公钥加密的随机数 加密算法变更通知以后均用会话密钥进行通信 客户端握手结束通知并将之前通信产生的数据做一个摘要提供给服务端校验 4第四次握手 服务端收到公钥加密的随机数后使用私钥解密此时有了三个随机数将三个随机数用协商好的密钥加密算法进行加密 作为之后的会话密钥使用 然后发送加密算法变更通知 携带服务端握手结束通知并且将之前通信产生的数据做一个摘要提供给客户端校验 10https如何防范中间人攻击 中间人估计是伪造成服务器与客户端建立联系同时与服务端建立联系 主要通过两个手段 1非对称加密协商会话密钥 2身份校验客户端会校验服务器证书的合法性 11http1.1和http2的区别 http2对于http1.1有了部分改进 1头部压缩当多次请求使用相同的头部信息时会将头部信息存入头信息表之后发送请求头部只会使用头信息中保存的索引号 2二进制报文http1.1采用的是纯文本的报文http2使用二进制存储包括头信息和数据体变成头信息帧和数据帧这样对计算机来说是有利的增加的传输的效率 3并发传输采用stream流多个stream可以公用一个tcp连接解决了http1.1的队头阻塞问题 4服务端可以主动推送消息这样减少了发送http请求的次数提高了性能 12建立tcp连接后什么情况下会中断 1正常情况下客户端发送fin报文后调用close函数四次挥手后就会中断连接 2发送方发送数据超时没收到ack回复重发到最大次数后断开连接 3长时间没有发送请求和响应也会中断tcp连接 13httpsocket和tcp的区别 http是应用层的超文本传输协议定义了客户端和服务端交换的数据格式和规则 socket提供了网络传输的接口 tcp是传输层的协议负责在通信的两端建立可靠的数据传输连接