zoukankan      html  css  js  c++  java
  • Linux高性能服务器编程:(TCP/IP协议族)

    1. TCP/IP协议族体系结构:

    应用层:ping, telnet, OSPF, DNS

    传输层:TCP, UDP

    网络层:ICMP, IP  (使用IP寻址)

    数据链路层:ARP, RARP (使用物理地址寻址)

    数据链路层实现了网卡接口的网络驱动程序,以处理数据在物理媒介上的传输。网络驱动程序隐藏了不同物理网络的电气特性,为上层提供统一的接口。

    ARP地址解析协议,RARP逆地址解析协议。实现了IP地址和机器物理地址之间的相互转换。

    网络层实现数据包的选路和转发。网络上的主机不是直接相连的,而是通过多个中间节点,网络层的任务就是选择这些中间节点,以确定两台主机之间的通信路径。

    IP协议通过数据包的目的IP地址来决定如何投递它,如果不能直接发给目标主机,那么IP协议就为它寻找一个合适的下一跳路由器。

    传输层为两台主机上的应用层序提供端到端的通信,只关心通信的起始端和目的端。

    传输层协议有:TCP协议,UDP协议和SCTP协议。

    TCP协议为应用层提供可靠的、面向连接的和基于流的服务。使用超时重传、数据确认等方式来确保数据包被正确的发送至目的端。

    使用TCP协议必须先建立TCP连接,并在内核中为该连接维持一些必要的数据结构,比如连接的状态、读写缓冲区,以及诸多定时器等。

    UDP协议为应用层提供不可靠、无连接和基于数据报的服务。

    应用层服务处理应用程序的逻辑,在用户空间实现。数据链路层、网络层和传输层负责网络通信细节,在内核空间中实现。

    1.2 封装

    应用程序数据在发送到物理网络之前,将沿着协议栈从上往下传递,每层协议都将在上层数据的基础上加上自己的头部信息。

    经过TCP封装的称为TCP报文报;

    经过IP封装后的数据称为IP数据报;

    经过数据链路层封装的数据称为帧(frame)。

    帧的最大传输单元MTU,即帧最多能携带多少上层协议数据。帧才是最终在物理网络上传送的字节序列。

    1.3 分用

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

    因为IP协议、ARP协议和RARP协议都使用帧传输数据,所以帧的头部需要提供字段来区分它们。以太网帧使用2字节的类型字段来标识上层协议(0x800为IP数据报;0x806为ARP请求,0x835为RARP请求)

    同样,因为ICMP协议,TCP协议和UDP协议使用IP协议,所以IP数据报的头部采用16位的协议字段来区分它们。

    TCP报文段和UDP报文段则通过其头部中的16位端口号字段来区分上层应用程序。(DNS协议端口为53,HTTP协议对应80)

    一个携带ARP请求/应答报文的以太网帧长度为46字节。

  • 相关阅读:
    安装cloudbase-init和qga批处理
    Windows添加自定义服务、批处理文件开机自启动方法
    Windows批处理:自动部署常用软件(静默安装)
    windows auto activate
    XML转译字符
    Leetcode908.Smallest Range I最小差值1
    Leetcode917.Reverse Only Letters仅仅反转字母
    Leetcode896.Monotonic Array单调数列
    Leetcode905.Sort Array By Parity按奇偶排序数组
    Leetcode892.Surface Area of 3D Shapes三维形体的表面积
  • 原文地址:https://www.cnblogs.com/sssblog/p/12366737.html
Copyright © 2011-2022 走看看