计算机网络基础知识2

为什么TCP连接需要三次握手

三次握手为了确认客户端跟服务器都能接受到对方的信息,两次的话服务器不能确认客户端能否接收自己发的包


第一次握手,客户端给服务器发包。 此时服务器确认自己可以接收客户端的包,客户端不确认服务器是否接收到了自己发的包
第二次握手,服务器端回复客户端。 此时客户端确认自己发的包被服务器收到,也确认自己可以正常接收服务器包,客户端对此次通信没有疑问了。服务器可以确认自己能接收到客户端的包,但不能确认客户端能否接收自己发的包
第三次握手,客户端回复服务器。 客户端已经没有疑问了,服务器也确认刚刚客户端收到了自己的包。两边都没有问题,开始通信
简单概括:第一次:服务端和客户端建立联系;第二次:服务器端回复客户端;第三次:客户端回复服务器

为什么TCP连接需要三次握手四次挥手

为什么是三次握手?
为了防止已失效的连接请求报文段突然有送到了服务器,因而产生错误,假设两次握手时,客户发出的第一个请求连接报文段在某一网络节点长时间滞留,以致延误到连接释放后才到达服务器。服务器收到失效的连接请求报文段后,认为是客户又发出一次新的连接请求。于是向客户发送确认报文段,同意建立连接,此时在假定两次握手的前提下,连接建立成功。这样会导致服务器的资源白白浪费



为什么是四次挥手?
TCP协议是全双工通信,这意味着客户端和服务器端都可以向彼此发送数据,所以关闭连接是双方都需要确认的共同行为,假设是三次挥手时,首先释放了客户到服务器方向的连接,此时TCP连接处于半关闭状态,这时客户不能向服务器发送数据,而服务器还是可以向客户发送数据。如果此时客户收到了服务器的确认报文段后,就立即发送一个确认报文段,这会导致服务器向客户还在发送数据时连接就被关闭。这样会导致客户没有完整收到服务器所发的报文段

TCP的三次握手和四次挥手绘图(画写ACK和SEQ的值)

所谓三次握手(Three-Way Handshake)即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。由客户端执行connect()触发
在这里插入图片描述

所谓四次挥手(Four-Way Wavehand)即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。由客户端或服务端任一方执行close来触发
在这里插入图片描述

TCP与UDP的区别

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议
UDP(User Datagram Protocol用户数据报协议)是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务
TCP 是面向连接的传输控制协议,而UDP提供了无链接的数据报服务//类似电话与短信
TCP 面向连接,提供可靠的数据服务
TCP首部开销20字节,UDP首部开销8字节
TCP逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道
UDP没有拥塞机制,因此网络出现拥堵不会使源主机的发送效率降低(有利于实时会议视频等)
TCP的连接只能是点到点的,UDP支持一对一,多对一,多对多的交互通信

Get和Post的区别?什么情况下用到

1 GET使用URL或Cookie传参。而POST将数据放在BODY中
2 GET的URL会有长度上的限制,则POST的数据则可以非常大
3 POST比GET安全,因为数据在地址栏上不可见
最本质的区别
Get是用来从服务器上获得数据,而post是用来向服务器上传递数据
若符合下列任一情况,则用post方法:
a 请求的结果有持续性的作用,例如:数据库内添加新的数据行
b 若使用get方法,则表单上收集的数据可能让URL过长
c 要传送的数据不是采用ASCII编码
若符合下列任一情况,则用get方法:
a 请求是为了查找资源,html表单数据仅用来搜索
b 请求结果无持续性的副作用
c 收集的数据及html表单内的输入字段名称的总长不超过1024个字符

HTTP2 / HTTP1 之间的区别

1 http2采用二进制格式而非文本格式,比起文本格式,二进制格式解析起来更加高效,并且错误少
2 http2是完全的多路复用,非有序并阻塞的----只需要一个连接即可实现并行,多路复用的意思是它能同时处理多个消息的请求和响应,http1是一个连接一次只能提交一个请求的效率比较高,多了就会变慢
3 使用报头压缩,http2降低了开销,http1的消息头很大冗余,http2是将消息头中的不同的部分分别用不用的索引进行表示,且会用哈夫曼编码压缩字符串,最后封装成frame
4 http2让服务器可以将响应主动”推送”到客户端缓存中,HTTP2中服务器会主动将资源推送给客户端,例如把js和css文件主动推送给客户端而不用客户端解析HTML后请求再响应

websocket

websocket是一种网络通信协议,是HTML5开始提供的一种在单个TCP连接上进行全双工通信的协议,这个对比着http协议来说,http协议是一种无状态的、无连接的、单向的应用层协议,通信请求只能由客户端发起,服务端对请求做出应答处理。http协议无法实现服务器主动向客户端发起消息,Websocket 连接允许客户端和服务器之间进行全双工通信,以便任一方都可以通过建立的连接将数据推送到另一端。WebSocket 只需要建立一次连接,就可以一直保持连接状态
在这里插入图片描述

HTTP Response的Header 里面都有什么

1 Cache-Control:告诉所有的缓存机制是否可以缓存及哪种类型
2 Content-Length:响应体的长度
3 Content-Type:返回内容的MIME类型,所谓的MIME就是解析的是什么,比方说:jpg就是图片
4 Expires:响应过期的日期和时间
5 Set-Cookie:设置Http Cookie

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值