美文网首页
常见网络协议

常见网络协议

作者: X1_blog | 来源:发表于2020-05-06 15:18 被阅读0次

    常用协议的区别

    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

    相关文章

      网友评论

          本文标题:常见网络协议

          本文链接:https://www.haomeiwen.com/subject/ucftghtx.html