关于TCP UDP HTTP HTTPS的问题

目录

TCP的三次握手

下面就是TCP与UDP的区别:

Http与Https的区别:

什么是Http协议无状态协议

怎么解决Http协议无状态协议?

HTTP事务

 HTTP1.0与Http1.1 的区别 :

常见的HTTP相应状态码

HTTP优化方案

请求转发与请求重定向的区别

请求转发:

请求重定向:

总结get和post区别

cookie 和session 的区别:

前端浏览器地址的一个 http 请求到后端整个流程是怎么样


http:是用于www浏览的一个协议。

tcp:是机器之间建立连接用到的一个协议

 

1.TCP/IP 是个协议组,可分为三个层次:网络层,传输层和应用层

在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。

在传输层中有TCP协议与UDP协议。

在应用层有FTP、HTTP、TELNET、SMTP、DNS等协议。

因此,HTTP本身就是一个协议,是从Web服务器传输超文本到本地浏览器的传送协议。

 

Http在TCP/IP协议栈中的位置

由图可得:

        http协议通常承载与TCP协议之上,有时也承载与TLS或SSL协议之上,这个时候就成了 https

 

TCP的三次握手

SYN(synchronous)是TCP建立连接时使用的握手信号,在客户机和服务器之间建立正常的TCP网络连接时,客户机首先发出一个SYN消息,服务器使用SYN+ACK应答表示接收到了这个消息,最后客户机再以ACK消息响应。这样在客户机和服务器之间才能建立起可靠的TCP连接,数据才可以在客户机和服务之间传递。

上面提到ACK,ACK(Acknowlwdgement),即确认字符,在数据通信中,接收站发给发送站的一种传输类控制字符,表示发来的数据已确认接收无误。

 

下面就是TCP与UDP的区别:

 

Http与Https的区别:

  • HTTP 的URL 以http:// 开头,而HTTPS 的URL 以https:// 开头
  • HTTP 是不安全的,而 HTTPS 是安全的
  • HTTP 标准端口是80 ,而 HTTPS 的标准端口是443
  • 在OSI 网络模型中,HTTP工作于应用层,而HTTPS 的安全传输机制工作在传输层
  • HTTP 无法加密,而HTTPS 对传输的数据进行加密
  • HTTP无需证书,而HTTPS 需要CA机构wosign的颁发的SSL证书

 

什么是Http协议无状态协议

无状态协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息。

也就是说,当客户端一次HTTP请求完成以后,客户端再发送一次HTTP请求,HTTP并不知道当前客户端是一个”老用户“。

 

怎么解决Http协议无状态协议?

可以使用Cookie来解决无状态的问题,Cookie就相当于一个通行证,第一次访问的时候给客户端发送一个Cookie,当客户端再次来的时候,拿着Cookie(通行证),那么服务器就知道这个是”老用户“。

 

HTTP事务

一次HTTP操作称为一个事务,其工作过程分为四步:

1)首先客户机与服务器需要建立连接。只要单击某个超级连接,HTTP的工作开始。

2)建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL),协议版本号,后面是MIME信息包括请求修饰符,客户机信息和可能的内容。

3)服务器接收到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号,一个成功或错误的代码,后面是MIME信息包括服务器信息,实体信息和可能的内容。

4)客服端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,由显示屏输出,对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。

 

 HTTP1.0与Http1.1 的区别 :

HTTP/1.0每次请求都需要建立新的TCP连接,连接不能复用。HTTP/1.1新的请求可以在上次请求建立的TCP连接之上发送,连接可以复用,减少重复进行TCP三次握手的开销,提高效率。注意:在同一个TCP连接中,新的请求需要等上一次请求收到响应后,才能发送。

 

 

常见的HTTP相应状态码

200:请求被正常处理

204:请求被受理但没有资源可以返回

206:客户端只是请求资源的一部分,服务器只对请求的部分资源执行GET方法,相应报文中通过Content-Range指定范围的资源。

301:永久性重定向

302:临时重定向

303:与302状态码有相似功能,只是它希望客户端在请求一个URI的时候,能通过GET方法重定向到另一个URI上

304:发送附带条件的请求时,条件不满足时返回,与重定向无关

307:临时重定向,与302类似,只是强制要求使用POST方法

400:请求报文语法有误,服务器无法识别

401:请求需要认证

403:请求的对应资源禁止被访问

404:服务器无法找到对应资源

500:服务器内部错误

503:服务器正忙

 

HTTP优化方案

TCP复用:TCP连接复用是将多个客户端的HTTP请求复用到一个服务器端TCP连接上,而HTTP复用则是一个客户端的多个HTTP请求通过一个TCP连接进行处理。前者是负载均衡设备的独特功能;而后者是HTTP 1.1协议所支持的新功能,目前被大多数浏览器所支持。

内容缓存:将经常用到的内容进行缓存起来,那么客户端就可以直接在内存中获取相应的数据了。

压缩:将文本数据进行压缩,减少带宽

SSL加速(SSL Acceleration):使用SSL协议对HTTP协议进行加密,在通道内加密并加速

TCP缓冲:通过采用TCP缓冲技术,可以提高服务器端响应时间和处理效率,减少由于通信链路问题给服务器造成的连接负担。

 

请求转发与请求重定向的区别

请求转发:

请求转发,即request.getRequestDispatcher().forward(),是一种服务器的行为,客户端只有一次请求,服务器端转发后会将请求对象保存,地址栏中的URL地址不会改变,得到响应后服务器端再将响应发给客户端;

 

请求重定向:

请求重定向,即response.sendRedirect(),是一种客户端行文,从本质上讲等同于两次请求,前一次请求对象不会保存,地址栏的URL地址会改变。

 

用生活中一个常见的例子来说明两者之间的区别,某人要去办理护照:

请求转发:某人去了甲局,甲局看了之后,直到护照应该由乙局来管,但甲局的工作人员并没有赶走某人,而是让某人等着,自己在办公室后面联系了乙局的工作人员,乙局护照办好后送到了甲局,然后甲局的工作人员将护照交给了某人;

请求重定向:某人去了甲局后,甲局的工作人员说护照不归他们关,应该去乙局。然后某人自己去了乙局,办了护照。

 

总结get和post区别

get参数通过url传递,post放在request body中。

get请求在url中传递的参数是有长度限制的,而post没有。

post比get更安全,因为get请求参数直接暴露在url中,所以不能用来传递敏感信息。

get请求只能进行url编码,而post支持多种编码方式

get请求会浏览器主动cache,而post请求不会被缓存。

get请求参数会被完整保留在浏览历史记录里,而post中的参数不会被保留。

 

get和post本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。

get产生一个TCP数据包;post产生两个TCP数据包。

 

长的说:

对于get方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);

而对于post,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

(据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。)

 

cookie 和session 的区别:

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗

考虑到安全应当使用session。

3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能

考虑到减轻服务器性能方面,应当使用COOKIE。

4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

5、所以个人建议:

将登陆信息等重要信息存放为SESSION

其他信息如果需要保留,可以放在COOKIE中

 

前端浏览器地址的一个 http 请求到后端整个流程是怎么样

简单来说:

1. 首先是浏览器程序开始解析你的地址。把地址分为域名和路径(如何含有的话)两个部分,然后连接DNS服务器,查询这个域名的IP地址;

2. 获得DNS返回的IP地址之后,浏览器开始按照HTTP协议的格式向该IP地址和路径请求内容;

3. 服务器收到某个HTTP请求之后,就会把内容按照HTTP协议的格式返回这个请求的客户端;

4. 浏览器收到服务器返回的内容后,开始渲染并显示出来;

5. 浏览器与服务器对话结束;

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值