网络知识总结

本文对网络知识进行总结。

1.网络基础

1.1 GET和POST的请求的区别

POST、GET是http的两种请求方式,其主要区别如下:

  • 应用场景: GET请求是一个幂等的请求,一般GET请求不会对资源服务器产生影响,而POST非幂等请求,会对资源服务器产生影响。
  • 是否缓存: 浏览器一般会对GET请求进行缓存,但是很少对POST请求进行缓存。
  • 发送报文形式: GET请求,实体部分为空。POST请求报文实体部分一般为向服务器发送数据。
  • 安全性: GET接口请求参数放到URL中,这样对于POST请求是不安全的,因为访问的记录保存在历史记录中。
  • 请求长度: 由于浏览器对url的限制,所以会影响get请求发送时的长度。这个是浏览器自身限制,非RFC限制。
  • 请求参数: POST支持更多的请求参数。

注:幂等的请求: 一个HTTP方法是幂等的,指的是同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的。换句话说就是,幂等方法不应该具有副作用(统计用途除外)。在正确实现的条件下, GETHEADPUTDELETE 等方法都是幂等的,而 POST 方法不是。

1.2 POST和PUT请求的区别

  • PUT请求是向服务器发送数据,从而修改数据内容,但是不会增加数据种类,也就是无论PUT几次,其结果一样。(更新数据)
  • POST请求是向服务器发送数据,从而改变数据资源和种类,他会新建新的资源。(新增数据)

1.3 常见HTTP请求和响应头

HTTP请求头有如下:

  • Referer:发出请求页面url
  • Accept-Charset:浏览器能够处理的内容
  • Accept-Encoding:浏览器能够显示的字符集
  • Connection:浏览器和服务器之间的连接
  • Cookie:当前页面设置的cookie
  • Host:当前页面所在的域名
  • Referer:发送页面请求的url
  • User-Agent:浏览器用户代理字符串
    HTTP响应头:
  • Date:表示用户发送消息的时间
  • Server:服务器名称
  • Cache-Control:控制缓存
  • Content-Type:返回的文档类型

1.4 HTTP 和 HTTPS 区别

  • HTTPS需要CA证书,费用较高;而HTTP协议不需要
  • HTTPS是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议
  • 使用连接方式不同,端口也不同,HTTP是80,HTTPS是443
  • HTTP连接是简单的,无状态;而HTTPS是具有SSL和HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP更安全。

1.5 TCP三次握手

image.png

TCP三次握手过程:

  • 第一次握手:客户端发送SYN报文,进行SYN_SEND状态,等待服务端确认。
  • 第二次握手:服务端收到SYN报文,需要给客户端发送ACK确认报文,同时服务端也向客户端发送一个SYN报文,即SYN+ACK报文,这个SYN报文和上面第一次握手报文不一样,这是服务端的报文,服务端进行SYN_RCVD状态
  • 第三次握手:客户端收到SYN+ACK报文,向服务端发送确认包(ACK),客户端进入ESTABLISHED状态,待服务端收到客户端发送的ACK后,服务端也进入ESTABLISHED状态,并完成三次握手。

延伸问题:

二次握手可以吗?

TCP建立之前,需要确认客户端和服务端双方包容和发包能力。

  • 第一次握手: 客户端发送网络包,服务端接收到,这样服务端能得到结论:客户端的发送能力、服务端的接收能力政策。
  • 第二次握手: 服务端发包,客户端收到,这样客户端能收到结论:服务端发送能力、接收能力正常,客户端接收、发送能力正常,但是客户端不明确服务端是否知道客户端接收能力正常。
  • 第三次握手: 客户端发包,服务端接收到,这样服务端就能确定,客户端的接收能力正常。

进一步学习,可阅读链接:淘宝二面,面试官居然把TCP三次握手问的这么详细

1.6 TCP四次挥手

image.png
  • 第一次挥手:客户端发起FIN包(FIN = 1),客户端进入FIN_WAIT_1状态。TCP规定,即使FIN包不携带数据,也要消耗一个序号。
  • 第二次挥手:服务端收到FIN包,发出ACK(ACK = u + 1),并携带自己的序号seq = v,服务端进入CLOSE_WAIT_1状态,这时客户端已经没有数据需要发送,这时如果服务端如果有数据要发送,客户端依旧需要接受,客户端接受到ACK和seq后,进行FIN_WAIT_2状态。
  • 第三次挥手:服务端数据发送完毕,向客户端发送FIN包(seq = w,ACK = u + 1),半连接状态服务端可能还会发送其他数据给客户端,加入发送数据是seq = w,服务端此时进入LAST_ACK状态。
  • 第四次挥手:刻度端收到FIN包后,发出确认包(ACK = 1,seq = u + 1),此时客户端进入TIME_WAIT状态,此时TCP连接还没释放。经过2 * MSL后,才进入CLOSED状态。服务端在接受到确认包后,就进入了CLOSED状态,可以看出服务端比客户端更快断开连接。

延伸问题:

为什么建立连接握手三次,关闭连接时需要是四次呢?

其实在TCP握手的时候,接受端发送SYN+ACK的包是将ACK和SYN合并在一起,合到一个包中,所以减少了一个包的发送,减少了一次请求。

对于四次挥手,由于TCP是全双工通信,在主动关闭方发送确认包后,接受可能还需要接受数据,不能马上关闭通信通道,所以不能将服务端的FIN包和ACK进行合并,只能先确定ACK,等待服务端没有再发送数据时,发送FIN包,所以四次挥手是四次数据包的交互。

1.7 TCP和UDP

TCP和UDP都是属于传输层协议,都属于TCP/IP协议族:

UDP

UDP全称:用户数据报协议。在网络中,它处理数据包,是一种无连接协议。在OSI中,其属于IP协议上一层。UDP不提供数据包分组、组装、和对数据排序能力,当数据包发送后,无法得知服务端是否接受成功。

特点:

  • 面向无连接:UDP不需要像TCP那样进行三次握手,想发送就可以发送。
  • 单播、多播、广播特点:UDP支持一对多、多对多、多对一的方式。
  • 面向报文:发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。因此,应用程序必须选择合适大小的报文。
  • 不可靠性:UDP不需要建立,想发就发,这是不可靠的。
  • 头部开销小,传输高效。

TCP

TCP特点:

  • 面向连接:需要三次握手才能建立可靠连接。
  • 只支持单播传输:每条TCP连接只支持点对点连接和传输,不支持多播、广播。
  • 可靠传输:由于建立可靠的连接,以及有对应判断丢码、编码,还有重传的机制。
  • 提供拥塞控制:当连接拥塞时,能减少网络的注入数据
  • 全双工通信:TCP允许通信双方的应用程序在任何时候都能发送数据,因为TCP连接的两端都设有缓存,用来临时存放双向通信的数据。当然,TCP可以立即发送一个数据段,也可以缓存一段时间以便一次发送更多的数据段(最大的数据段大小取决于MSS)

进一步学习,可阅读链接:一文搞懂TCP与UDP的区别

1.8 HTTP2.0和HTTP1.1区别

  • 二进制协议: HTTP2.0是一个二进制协议。在HTTP1.1中,报文头部是文本(ASCII编码),数据报可以为文本,也可以是二进展。在HTTP2.0中,报文头部彻底是二进制,消息体和数据体都是二进制,并统称为‘帧’,这个是HTTP2.0多路复用的基础。
  • 多路复用: HTTP2.0实现了多路复用,虽然HTTP2.0依旧使用TCP协议,但是一个连接中,客户端和服务端可以同时发送、接收多个请求,避免‘队头阻塞’的问题
  • 数据流: HTTP2.0实现数据流的概念,因为HTTP2.0的数据包是不按顺序,同一连接里面的数据包,可能属于不同请求,需要对数据包做标记,指出属于那个请求,HTTP2.0将每个请求或响应的数据包,成为数据流。
  • 头信息压缩: HTTP2.0实现头信息的压缩
  • 服务端推送: HTTP2.0允许服务器没经过请求,主动向客户端推送资源(静态资源),这个称为服务端推送。

1.9 OSI七层模型

OSI七层模型 作用
应用层 为应用程序提供网络服务
表示层 数据格式化,加密,解密
会话层 建立、维护、管理通话
传输层 建立、维护、管理端到端连接
网络层 IP寻址和路由选择
数据链路层 控制网络层和物理层连接
物理层 比特流传输
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,045评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,114评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,120评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,902评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,828评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,132评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,590评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,258评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,408评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,335评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,385评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,068评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,660评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,747评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,967评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,406评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,970评论 2 341

推荐阅读更多精彩内容