常见网络协议

2020-05-06  本文已影响0人  X1_blog

常用协议的区别

IP : 无连接的 , 不可靠, 无序的

TCP : 面向连接, 可靠的, 基于字节流, 全双工 (排序+控制)

UDP: 面向事务 , 无序的, 基于数据报

HTTP: 面向短连接 , 无状态 , 可靠的

Websocket: 面向长连接 , 有状态 , 可靠的 (类似TCP的机制), 全双工

HTTP为什么不延续TCP的长连接特性?

HTTP是无状态的, TCP是面向连接的

TCP设计的需求是 : 数据可靠传输 (设计支持长连接)

HTTP设计的需求是: 数据可靠(TCP特性), 高效率; 至于状态维护并不是必须的内容;

HTTP使用了TCP提供的部分功能, 为了高效传输舍弃了TCP的长连接(使用短连接)

个人猜测: 互联网设计之初的目标是指定地址, 访问页面, 因此是请求-回应的模式, 为了效率考虑设计了HTTP1.0, 后来的发展才有了状态的需求, 于是设计了websocket

HTTP 请求/响应 构成?

HTTP 请求 = 状态行 + 请求头 + 消息主体

状态行 = 请求方式 + url + 版本号

HTTP 响应 = 状态行 + 响应头 + 消息主体

状态行 = 版本号 + 状态码 + 状态描述

POST和GET的异同?

都是HTTP下的请求方式;

  1. GET更简单, 速度更快; POST需要封装数据
  2. POST相对于明文显示数据的GET方法显得更安全
  3. GET发送的数据只能是文本格式, 长度小于1024字节; POST能发送文本 + 二进制格式, 只有POST可以配合使用enctype发送文件

TCP与UDP的区别?

  1. UDP没有重发, 没有状态, 是不可靠的高效传输协议
  2. UDP的数据报是有长度限制的
  3. UDP支持广播和单播
  4. UDP是无状态的, 不需要三次握手/四次挥手

TCP为什么是面向连接的协议?

  1. 使用长连接机制
  2. 有状态(对端双方都知道自己发出去的包是否被对方接收)
  3. 有数据控制(重发/重排序/流量控制/剔除重复/数据校验)

长连接如何减少连接浪费?

  1. 关闭长时间无请求的连接
  2. 限制客户端最大连接数
  3. 启用心跳机制, 对离线设备断开连接

TCP/IP 四层结构 / OSI 7 层结构

层级结构 常见协议
应用层 FTP(TCP) ,SSH, HTTP(TCP), SMTP / POP3, TELNET , DHCP(UDP) , DNS
传输层 TCP + UDP
网络层 IP , ICMP(ping), IGMP, ARP,RARP
(物理)链路层 Wi-Fi, ethernet
上一篇下一篇

猜你喜欢

热点阅读