网络

一、http(超文本传输协议)
请求、响应报文
连接建立流程
http的特点

请求报文:请求行包括方法、URL、协议版本、,首部字段(多个key value组成的键值对),请求实体(get中没有,post中有)
响应报文:响应行包括版本、状态码、请求短语,首部字段(多个键值对),响应实体

http的请求方式有get、post、head、put、delete、options
get和post的请求区别是get是通过?和&将参数拼接在url上的,post请求参数在body里,get参数长度限制2048个字符,post一般没有限制,get请求不安全,post请求相对安全。get是用来获取资源的对于服务器来说是(安全的,幂等的,可缓存的),post是用来处理资源的(非安全、非幂等的,不可缓存的)

常见的安全性的不引起server端变得的请求方式有get、head、options
幂等性是多次和一次执行的效果是完全一样的
可缓存性标签请求是否可缓存

状态码:
1xx 2xx(200表示访问成功) 3xx(301、302可能发生了网络的重定向) 4xx(401、404表示访问不存在) 5xx(501、502表示服务端有问题)

三次握手和四次挥手
client syn(同步报文)-> server
client <-syn ack(同步ack的tcp报文) server
client ack(确认报文)> server

client http请求报文-> server
client <-http相应报文 server

client fin(终止报文) -> server
client <-ack(确认报文) server
client <-fin ack(服务端再次发送终止报文,因为可能还有服务端向客户端传送数据) server
client ack(确认报文)-> server

http特点有无连接(解决方法用http持久链接)、无状态(Cookie、Session来解决无状态的问题)
持久链接涉及的头部字段 Connection:keep-alive,time,max,
持久链接判断持久链接接受:相应报文Content-length:1024表示请求结束,chunked如果为空表示请求结束
Charles是用来http中间人攻击来实现的,一个中间人或者说代理服务器,可以串改一些相关数据

二、https和网络安全
和http的区别,http=http+SSL/TLS,多了一个安全相关的模块,在应用层之下传输层之上插入了SSL/TLS
IP协议栈-》TCP传输层-》应用层

https的建立流程
client ->(tls版本、支持的加密算法、随机数) server
client <-(商定的加密算法、随机数,server证书) server
client 验证证书,组装会话秘钥
client ->(通过客户端的公钥对预主秘钥进行加密传输) server
server 通过私钥解密得要预主秘钥,组装会话密码
client 发送加密的握手消息
server 返回加密的握手消息

https使用了非对称加密和对称加密的两种手段,在链接建立的过程中使用非对称加密,建立之后后续的通讯过程使用对称加密(因为非对称加密比较耗时)

非对称加密,使用了公钥和私钥,加密和解密使用的秘钥是不一样的饿,如果加密用公钥解密用私钥,加密用私钥解密则用公钥
对称加密,由于使用的同一秘钥,可能需要网络进行秘钥传输,是不安全的

三、传输协议
TCP 传输控制协议 面向连接,可靠传输,面向字节流,流量控制,拥塞控制
UDP 用户数据报协议 ,特点有无连接,尽最大努力交付,面向报文(既不合并也不拆分)。有复用、分用、差错检查的功能

三次握手是为了解决请求超时场景,来规避连接异常产生的问题
四次挥手是因为客户端和服务端建立的双通的,需要双方发送请求断开报文

TCP的可靠性包括无差错、不丢失、不重复、按序到达,通过停止等待协议实现的(无差错情况,超时重传,确认丢失,确认迟到)
TCP的流量控制是通过滑动窗口协议实现的
TCP拥塞控制是通过慢开始、避免拥塞、快恢复、快重传

四、DNS
域名到ip地址的映射,DNS解析请求采用UDP数据报协议,且明文。解析过程为先向DNS服务器发送请求获取IP,然后通过IP去请求对应的服务器。
DNS查询方式:递归查询(逐级向上询问)、迭代查询(向周围的DNS服务器询问)
DNS的劫持:UDP协议且明文,可能会被劫持,是其访问错误的IP。DNS劫持与http没有关系,因为其发生在http建立连接之前,DNS解析是请求使用UDP报文的53端口号
DNS解析转发:是因为直接的DNS服务器,转发给其他的DNS服务进行解析,可能会出现解析缓慢的问题,因为出了跨网访问,比如访问移动的DNS服务器可能最终是由电信的DNS服务器进行解析的。
DNS劫持的解决方案有httpDNS(采用http协议的的80端口去获取dns解析,因为不存在UDP协议,所以不存在被劫持的问题)和长连接DNS(建立一个常连接通过Server,这个Server通过内外去请求DNS)

五、Session、Kookie
Session和CookieHTTP协议是无状态协议的一种补偿,Cookie是保存在客户端的
客户端发送的cookie在http的请求报文的Cookie首部字段中
服务端设置http相应报文的Set-Cookie首部字段
新Cookie覆盖老Cookie修改Cookie,覆盖规则为:name、path、domain等需要需原cookie一直,删除也一样,只是给cookie的过期时间expires或者maxAge设置为0
对Cookie进行加密处理保证Cookie的安全、在https上携带Cookie、设置Cookie为httpOnly可防止垮站脚攻击
Session也是记录用户状态,区分用户的,是存放在服务器的,Session是需要依赖Cookie的机制来实现

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一.HTTP HTTP是超文本传输协议 1.请求报文的格式 请求行:方法(get、post)、url(请求的地址)...
    蔚尼阅读 687评论 0 2
  • HTTP协议 在 OSI 七层模型中,HTTP 协议位于最顶层的应用层中。通过浏览器访问网页就直接使用了 HTTP...
    WendySays阅读 807评论 0 1
  • 1.TCP报头格式 UDP报头格式 TCP报头格式 UDP报头格式 具体的各部分解释看 TCP报文格式详解 - ...
    杰伦哎呦哎呦阅读 2,545评论 0 5
  • OSI与TCP/IP各层的结构与功能,都有哪些协议 物理层:在物理媒体上传输原始的数据比特流。 数据链路层:将数据...
    onlyHalfSoul阅读 1,340评论 0 4
  • 网络模型 OSI分层模型 OSI 模型(Open System Interconnection model)是一个...
    wustor阅读 529评论 0 2