简述http/https和tcp

360 阅读5分钟

http和https

参考文章 www.runoob.com/w3cnote/htt…

  • http协议(超文本传输协议)用于在web浏览器(客户端)和网站服务器之间传递信息 默认工作在tcp协议80端口 以明文方式发送内容 不提供任何方式的加密 如果被攻击者截取网站与服务器之间的报文 很容易读出其中的信息 所以http不适合传输敏感信息 例如银行卡号、密码等信息
  • https协议(超文本传输安全协议)透过计算机网络进行安全通信的传输协议 经由http进行通信 但利用ssl/tls加密数据包
  • https开发的主要目的 是提供对网站服务器的身份认证 保护交换数据的隐私与完全性
  • https工作原理 客户使用https url访问服务器 客户端要建立ssl链接 服务器接收到客户端的请求之后 将网站证书的公钥传输给客户端 客户端和服务器需要协商一致的安全等级 建立会话秘钥 通过服务器返回的公钥加密会话秘钥后传送给服务器 服务器通过私钥解密会话(类似RSA加密)

http和https区别

  • http明文传输,数据都是未加密的,安全性较差 -- https是基于http+ssl,数据都是未加密的,安全性较差
  • https协议需要到CA数字证书认证机构申请证书 需要一定费用
  • http的响应速度比https快 因为http使用tcp三次握手建立连接 客户端和服务器需要交换三个包
  • 而https除了tcp的三个包 还要加上ssl握手需要的九个包 所以一共是12个包
  • http和https使用的是不同的连接方式 用的端口也不一样 http是80 https是443
  • https其实就是建构在SSL/TLS之上的http协议 所以https比http要更耗费服务器资源

TCP

tpc的任务

1.确保足够快的发送数据报文 以便充分使用网络容量 但不能引起网络堵塞 tcp会将数据流分成适当长度的报文段 之后把结果包传给IP层 由它通过网络将包传送给接收端实体的TCP层

2.确保成功并有序的提交数据报 tcp在发送和接收时都要使用校验和函数计算校验数据的正确性与合法性 确认无误后tcp会给报文分配一个序列号 用来保证按序接收 服务端接收到报文后 会根据序列号返回一个递增的确认号 意思是 1001的包我收到了 确认号为1002 下一个包你需要给我发送的是序列号为1002的报文 如果在合理的时间段内没有收到确认号 那么tcp会假设对应的数据报已丢失 会对报文再次校验后进行重传(超时重传和捎带确认机制) 在tcp层需要把接收到的数据包重新装配为正确的数据

tcp流相当于是一条公路 ip层相当于货车 在tcp传输的数据流相当于货物 tcp将数据流分成多段 每段报文以单独的IP数据形式发送到tcp传输实体 相当于使用货车分载货物在公路上传送

防止网络堵塞(拥塞控制)这一部分我阐述的不如百度 可以点击查看 baike.baidu.com/item/TCP/33…

tcp的作用 面向通信连接 可靠通信方式 网络不佳时尽量降低开销

三次握手/四次挥手

  • syn 建立连接 ack响应 fin关闭连接 C客户端 S服务器
  • 三次握手(建立连接):
  • 第一次握手 C发起请求连接 S只可以确认自己接收到了C发送的报文 所以syn为1
  • 第二次握手 C可以确认S收到了自己发送的报文段 并且确认自己可以接收到S发送的报文段 所以返回ACK=1 SYN=1
  • 第三次握手 S可以确定C收到了自己发送的报文段 连接已建立 之后都是ACK 没有SYN了
  • 四次挥手(连接终止):
  • 为什么建立连接是三次 而终止连接需要四次呢 因为tcp是双工的 服务端和客户端之间是双向的 假设客户端发起断开连接请求时 服务端还有东西正在传送 就会等到服务端传送完毕后再断开
  • 第一次挥手 客户端发起断开连接请求 此时FIN=1(关闭连接)
  • 第二次挥手 服务端接收到客户端发起的断开连接请求 返回ACK=1(响应) 两次挥手后 客户端失去发送能力 等待服务端断开连接请求
  • 第三次挥手 服务端返回的数据传送完毕 返回断开连接请求给客户端 FIN=1
  • 第四次挥手 客户端接收到来自服务端的断开连接请求后 返回服务端ACK =1 就此完成四次挥手

image.png

以上文章是我在学习时作为笔记记录于有道云笔记中 由于有道云bug 常常丢失我的笔记 故决定抽空搬到掘金上 若有错处或描述不佳的地方 请指正