zoukankan      html  css  js  c++  java
  • 网络协议-TCP/IP基础(3)

    IP


    •  IP是TCP/IP协议族中最为核心的协议,所有的TCP、UDP、ICMP、IGMP都以IP数据报格式传输
    • IP提供不可靠的,无连接的数据报传输服务
    • 不可靠的意思是他不能保证数据报能否成功到达目的地,IP仅提供最好的传输服务,如果发生某种错误时,如某个路由器暂时用完了缓冲区,IP有一个简单的错误处理算法;丢弃该数据报,然后发送ICMP消息报给信源端,任何要求的可靠性必须由上层来提供
    • 无连接,IP并不维护任何关于后续数据报的状态消息,每个数据报的处理是相对独立的,IP数据报可以不按发送顺序接收,如果一个信源向相同的信宿发送两个连续的数据报,每个数据报都是独立的进行路由选择,可能选择不同的路线

    两个关键命令

    ifconfig

    netstat


    IP首部

    IP的确定首部有20字节,后面是可选头(如果有就加在头中)

    总长度字段


    • 总长度字段是指整个IP数据报的长度,以字节为单位,利用首部长度字段和总长度字段,就可以知道IP数据报中数据内容的起始位置和长度,由于该字段为16bit,所以数据内容的长度最大可为65535字节,当数据报被分片时,该字段也随之改变。 

    标识字段


    • 标识字段唯一的标识主机发送的每一份数据报,通常没发送一份报文它的值就会加1

    • TTL生存时间字段设置了数据报可以经过的最多的路由器数。

    协议字段


    协议字段被IP用来对数据报进行分佣。根据它可以识别是哪个协议向IP传输数据。

    首部字段分析


    • 4个字节的32bit值以下面的次序进行传输:0-7bit,8-15bit,16-23bit,24-31bit。这种传输次序称为big endian字节序。由于TCP/IP首部中所有的二进制整数在网络中传输时都要求这种次序,因此又叫做网络字节序。
    • 目前的协议版本号为4,因此IP有时也被称为IPv4。
    • 首部长度指的是首部所占的32bit,包括任何选项,但因为他是一个4bit字段,因此首部最长为60字节。
    • 服务类型(TOS)字段包括一个3bit的优先权子字段,4bit的TOS子字段和1bit未用位但必须置为0.
    • 4bit的TOS分别代表,最小时延、最大吞吐量、最高可靠性、最小费用,4bit中只能置其中1bit。如果4bit均为0,那么就意味着是一般服务。

    可选字段


    最后一个字段是任选项,是数据报中的一个可变长的可选信息。

    • 安全和处理限制(用于军事领域)
    • 记录路径(让每个路由器都记下它的IP地址)
    • 时间戳(让每个路由器都记下它的IP地址和时间)
    • 宽松的源站选路(为数据报指定一系列必须经过的IP地址)
    • 严格的源站选路(与宽松的源站选路类似,但是要求只能通过指定的这些地址,不能经过其他地址)

    这些选项很少被使用,并非所有的主机和路由器都支持这些选项,选项字段一直都是以32bit作为界限,在必要的时候插入值为0的填充字节,这样就保证IP首部始终是32bit 的整数倍

    DSCP


    • DSCP(差分服务代码点)它在每个数据报IP头部的服务类型TOS标识字节中,利用已经使用的6bit和未使用的2bit,通过编码值来区分优先级。
    • DSCP使用6个bit,DSCP的值范围是0-63。
    • DSCP是IP优先和服务类型字段的组合,其实就是为了保证通信的QoS,在数据报IP头部的8个字节进行编码,来划分服务类型,区分服务的优先级。
    • 每个DSCP编码值都被映射到了一个一定义的PHB标识码。

    IP路由选择-host


    IP路由选择主要完成以下功能:

    • 搜索路由表,寻找能够与目的IP地址完全匹配的标目(网络号和主机号都要匹配),如果找到,则将报文发送给该表目指定的下一站路由器或直接连接的网络接口。
    • 搜索路由表,寻找能够与目的网络号相匹配的表目,如果找到,则把报文发送给该表目指定的下一站路由器或直接连接的网络端口。
    • 搜索路由表,寻找标志为“default”的表目,如果找到,则把报文发送给该表目指定的下一站路由器,如果上述步骤都没有成功,则该数据报传输失败。
  • 相关阅读:
    Kubernetes基本概念之Volume
    Kubernetes对象之PersistentVolume,PersistentVolumeClaim和StorageClass
    SSDB高效能缓存系统
    python2升级python3
    pkg-config相关的常用指令
    CISSP考试经验分享
    如何在命令行添加换行符到git commit -m "xxx"
    为什么tcp-wrappers被Redhat Centos Fedora废弃?
    Docker 国内仓库和镜像
    shell脚本对代码执行时间的计时
  • 原文地址:https://www.cnblogs.com/Virus-Faker/p/14703060.html
Copyright © 2011-2022 走看看