zoukankan      html  css  js  c++  java
  • TCP/IP 协议详解和运作过程

    一、TCP/IP协议族


    TCP/IP协议族体系结构及主要协议.png

    1、数据链路层

    ARP协议和RARP协议,它们实现了IP地址和机器物理地址之间的相互转化

    • ARP协议(Address Resolve Protocol,地址解析协议)

    • RARP协议(Reverse Address Resolve Protocol,逆地址解析协议)

    作用:网络层是用IP地址寻址一台机器,而数据链路层是用物理地址寻址一台机器,因此网络层必须先将目标机器的IP地址转化成其物理地址,这就是ARP协议的用途。RARP协议仅用于网络上某些无盘工作站。因为缺乏储存设备,无盘工作站无法记住自己的IP地址。但是它们可以利用网卡上的物理地址来向网络管理者查询自身的IP地址。运行RARP服务的网络管理者通常存有该网络上有所及其得物理地址到IP地址映射。

    2、网络层

    ip协议和ICMP协议,它们实现了数据包的选路和转发。网络层的任务就是选择这些中间节点,已确定两台主机之间通信路径。

    3、传输层

    TCP协议、UDP协议和SCTP协议
    传输层为两台主机上的应用程序提供端对端的通信。与网络层使用的逐跳通信方式不同,传输层只关心通信的起始端和目的端,而不在乎数据包的中转过程。

    • TCP协议,传输控制协议
    • UDP协议,用户数据报协议
    • SCTP协议,流控制传输协议

    4、应用层

    应用层在用户空间实现,而数据链路层、网络层和传输层处理网络通信细节,这部分必须稳定有高效,因此它们都在内核空间中实现。

    4.1、传输层和网络层区别

    传输层和网络层区别.png

    传输层为两台主机上的应用程序提供端对端的通信。与网络层使用的逐跳通信方式不同,传输层只关心通信的起始端和目的端,而不在乎数据包的中转过程

    4.2、TCP协议的特点

    为应用层提供可靠的面向连接基于流的服务。TCP协议通信使用超时重传数据确定等待来确保数据包被正确地发送至目的端。因此TCP服务是可靠的。

    使用TCP协议通信的双方必须先建立TCP连接,并在内核中为连接维持一些必要的数据结构,比如连接的状态读写缓冲区以及诸多定时器等。当通信结束时,双方必须关闭连接已释放这些内核数据。TCP服务时给予流的。给予流的数据没有边界限制,它源源不断地从通信的一端流入另一端。发送端可以逐个字节地向数据流写入数据,接受端也可以逐个字节地将它们读出

    4.3、UDP协议的特点

    为应用层提供不可靠无连接和基于据包的服务。

    UDP协议无法保证数据从发送端正确的地传送到目的端。如果数据在中途丢失,或者目的端数据校验发现数据错误误将其丢弃,则UDP协议知识简单的通知应用程序发送失败,因此,使用UDP协议的应用程序通常要自己处理数据确认、超时重传等逻辑。UDP协议是无连接的,即通信双方不保持一个长久的联系,因此应用程序每一次发送数据都要指定接收方的地址。每一个UDP数据都有一个长度,就接受端必须以该长度为最小单位将其所有内容一次性读出,否则数据将被截断。

    二、封装和分用

    1、封装

    上层协议是如何使用下层协议提供的服务的呢?其实通过封装实现的。应用程序数据在发送到无力网络上之前,将沿着协议栈从上往下依次传递。每一层协议都将在上册数据的基础上加上自己的头信息。


    封装.png
    1. 经过TCP封装后的数据称TCP报文段,经过UDP封装后的数据称为UDP数据包。
    2. 经过IP封装后的数据称为IP数据报。
    3. 经过数据链路层封装后的数据称帧

    2、分用

    当帧到达目的的主机时,将沿着协议栈自底向上依次传递。各层协议依次处理帧中本层负责的头数据,以获取所需的信息,并最终将处理后的帧交给目的应用程序。




  • 相关阅读:
    Leetcode951. Flip Equivalent Binary Trees翻转等价二叉树
    Leetcode938. Range Sum of BST二叉搜索树的范围和
    Leetcode962. Maximum Width最大宽度坡 Ramp
    STL容器-deque-双端队列
    Leetcode950. Reveal Cards In Increasing Order按递增顺序显示卡牌
    idea修改运行内存
    Web服务器进程连接数和请求连接数
    Vue问题总结
    Vue项目搭建过程
    去掉vue 中的代码规范检测(Eslint验证)
  • 原文地址:https://www.cnblogs.com/houruikk/p/7439792.html
Copyright © 2011-2022 走看看