美文网首页通讯协议
01 深入理解通讯协议

01 深入理解通讯协议

作者: 攻城狮哦哦也 | 来源:发表于2019-11-11 12:06 被阅读0次

    1 网络模型

    图片.png
    • 各层的关系
      每一个抽象层建立在低一层提供的服务上,
      并且为高一层提供服务。
    • 程序员重点关注
      应用层
      表示层
      会话层
      传输层
    • 程序员非重点关注
      网络层
      链路层
      物理层

    2 TCP/IP协议

    • 定义
      TCP/IP(Transmission Control Protocol/Internet Protocol)是Internet最基本的协议。
      把所有TCP/IP系列协议归类到四个抽象层中
      图片.png
    • TCP 面向连接的、可靠的流协议
    • UDP 面向无连接的通讯协议
    • IP 在源地址和目的地址之间传送的数据包
    • ICMP 控制报文协议
    • IGMP internet组管理协议
    • ARP 地址解析协议
    • RARP 反向地址转化协议

    2.1 TCP协议

    2.1.1 TCP的3次握手协议

    图片.png
    三次握手
    建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。
    为什么需要3次握手?
    TCP是面对连接的,所以需要双方都确认连接的建立。
    • 第一次握手
      客户端请求建立连接。
    • 第二次握手
      服务端应答客户端,并请求建立连接。
    • 第三次握手
      客户端针对服务端请求确认应答。

    TCP的3次握手的漏洞
    SYN洪泛攻击

    • 定义
      通过网络服务所在的端口发送大量伪造原地址的攻击报文,发送到服务端,造成服务端上的半开连接队列被占满,从而阻止其他用户进行访问。

    • 原理
      攻击者客户端利用伪造的IP地址向服务端发出请求(第一次握手),而服务端的响应(第二次握手)的报文将永远发送不到真实的客户端,服务端在等待客户端的第三次握手(永远都不会有的),服务端在等待这种半开的连接过程中消耗了资源,如果有成千上万的这种连接,主机资源将被耗尽,从而达到攻击的目的。

    • 解决方案
      1、无效连接监控释放
      2、 延缓TCB分配方法
      3、防火墙

    2.1.2 TCP的4次挥手协议

    图片.png

    四次挥手
    定义
    断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。
    为什么需要四次挥手?
    TCP是双全工(即客户端和服务器端可以相互发送和接收请求),所以需要双方都确认关闭连接。
    过程

    • 第一次挥手:客户端发送关闭请求
    • 第二次挥手:服务端响应客户端关闭请求
    • 第三次挥手:服务端发送关闭请求
    • 第四次挥手:客户端发送关闭确认请求

    2.1.3 TCP的通讯原理

    图片.png

    Socket套接字
    TCP用主机的IP地址加上主机上的端口号作为TCP连接的端点,这种端点就叫做套接字(socket)。
    TCP缓冲区
    每个TCP的Socket的内核中都有一个发送缓冲区和一个接收缓冲区。
    阻塞模式
    接收端缓冲区为空,接收端调用read方法的线程阻塞。
    发送端缓冲区满了或者不够大,发送端调用write方法的线程阻塞。
    TCP的可靠性与高效率
    有了缓冲区之后我们怎么传输才能确保高效与可靠?
    答:滑动窗口协议

    TCP中的滑动窗口协议——可靠和高效的结合

    图片.png

    滑动窗口

    • 发送方和接收方都会维护一个数据帧的序列,这个序列被称作窗口。
    • 发送方的窗口大小由接收方确认。

    目的

    • 确保数据不丢失
      如果发送的数据丢失了可以重新发。
    • 控制发送速度
      控制发送速度,以免接收方的缓存不够大导 致溢出,同时控制流量也可以避免网络拥塞。

    2.2 HTTP

    图片.png

    2.2.1 HTTP:***超文本传输协议,主要定义了客户端和服务端数据传输的方式。

    web客户端和服务器
    资源
    html/文本、word、avi电影、其他资源
    媒体类型
    MIME类型:text/html、 image/jpeg
    URI和URL
    web服务器资源的名字和用于描述一个网络上资源的地址

    • schema: http/https/ftp.
    • host: web服务器的ip地址或者域名
    • port: 服务端端口, http默认访问的端口是80
    • path: 资源访问路径
    • query-string: 查询参数
      方法:GET/PUT/DELETE/POST/HEAD

    2.2.2 HTTP协议的报文组成

    状态码 类别 原因
    1xx 提示信息 接收的请求正在处理
    2xx 成功 请求正常处理完毕
    3xx 重定向 需要进行附加操作以完成请求
    4xx 客户端错误 服务器无法处理请求
    5xx 服务器端的错误 服务器处理请求出错

    请求报文

    • 请求行
    • 请求头
    • 请求体
      响应报文
    • 状态行
    • 首部行
    • 返回体

    2.3 UDP协议

    UDP

    • 面向无连接的通讯协议。

    • 通讯时不需要接收方确认,属于不可靠的传输。

    • 因为不需要建立连接,所以传输速度快,但是容易丢失数据。
      报文组成

      图片.png
    • 源端口:源端口号,在需要对方回信时选用,不需要时可用全0。

    • 目的端口:目的端口号,这在终点交付报文时必须要使用到。

    • 长度: UDP用户数据报的长度,其最小值是8(仅有首部)。

    • 校验和:检测UDP用户数据报在传输中是否有错,有错就丢弃。

    2.4 总结

    图片.png

    相关文章

      网友评论

        本文标题:01 深入理解通讯协议

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