• 第三章 TCP/IP简介


    DoD模型:

    1、进程/应用层

    2、主机到主机层

    3、因特网层

    4、网络接入层

    DoD模型与OSI的对应关系

    DoD模型   OSI模型
    过程/应用层 -----------------> 应用层
    表示层
    会话层
     
    主机到主机层 -----------------> 传输层
     
    因特网层 -----------------> 网络层
     
    网络接入层 -----------------> 数据链路层
    物理层

    协议层次关系

    过程/应用层 Telnet FTP LPD SNMP
    TFTP SMTP NFS X Window
     
    主机到主机层 TCP UDP
     
    因特网层 ICMP ARP RARP
    IP
     
    网络接入层 Ethernet Fast Ethernet Token Ring FDDI

    DHCP:Dynamic Host Configuration Protocol,动态主机配置协议

    DHCP服务器可提供信息如下:

    1、IP地址

    2、子网掩码

    3、域名

    4、默认网关

    5、DNS服务器的地址

    6、WINS服务器的地址

    TCP是面向连接的。

    TCP数据段的首部格式:

    源端口号(16)

    目的端口号(16)

    序列号(32)

    确认应答号(32)

    数据偏移(4)

    保留(6)

    代码位(6)

    窗口(16)

    校验和(16)

    紧急指针

    选项(长度可变)

    填充

    数据部份(长度可变)

             

    TCP报文段首部的前20个字节是固定的,后面有4N字节是根据需要而增加的选项,因此首部的最小长度是20字节。
    首部固定部分的个字段的意义如下:
    1.源端口和目的端口字段——
    各占2字节。端口是运输层与应用层的服务接口。
    运输层的复用和分用功能都要通过端口才能实现。

    2.序号字段——
    占4字节。TCP是面向字节流的,一个TCP连接中传送的字节流中的每一个字节都按顺序编号。
    整个要传送的字节流的起始序号必须在连接建立时设置。
    首部中的序号值是指本报文段所发送的数据的第一个字节的序号。

    3.确认号:
    4个字节,期待收到对方下一个报文段的第一个数据字节的序号。
    若确认号=N,表明到序号N-1为止的所有数据都已经正确收到!

    4.数据偏移(即首部长度)——
    占4位,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。“数据偏移”的单位是 32 位字(以 4 字节为计算单位)。 
    因首部中还有长度不确定的选项字段,故数据偏移字段是必要的
    而数据偏移的单位是4字节,则此字段是用来表TCP首部的长度的,最大长度是4*15,60字节,即选项长度不超过40字节.

    5.保留字段——
    占 6 位,保留为今后使用,但目前应置为 0。

    6.紧急URG ——
    当 URG ==1 时,表明紧急指针字段有效。
    它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。 
    而不是按原来的排队顺序传送。
    当URG=1,发送进程就告诉TCP有紧急数据需传送,TCP就会将紧急数据插入到本报文段的最前面,这需要和首部中的紧急指针字段配合使用.

    7.确认ACK(ACKnowlegment):
    当ACK=1,确认号字段才有效,当ACK=0,确认号字段无效。
    TCP规定,在连接建立后所有传送的报文段都必须把ACK置1.

    8.推送PSH(PuSH):
    当两个进程通信时,有时一端的进程希望键入一个命令后,能立即收到对方的响应,这时TCP就可以将PSH=1,
    并立即创建一个报文段发送出去,接收方TCP收到PSH=1,就会尽快交付给接收端进程,而不会再等整个缓存填满后再交付。

    9.复位 RST (ReSeT) —— 
    当 RST=1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接
    RST置1可以用来拒绝一个非法的报文段或者拒绝打开一个连接。

    10.同步SYN:
    在建立连接时用来同步序号,当SYN=1&&ACK=0,表示这是一个请求连接的报文段,
    若对方同意建立连接,则在响应报文段中使得SYN=1&&ACK=1。
    故SYN=1:表示这是一个连接请求和连接接收报文。

    11.终止FIN:
    用来释放一个连接,当FIN=1,表示此报文段发送方的数据发送完毕,并要求释放连接。

    12.窗口:

    我告诉你我的窗口值的目的是要你知道我一次性能接收多大的数据量。
    2个字节,从0开始,窗口指的是发送本报文段的这一方的接收窗口(而不是自己的发送窗口),
    窗口值告诉对方:从本报文段首部的确认号开始算起,
    接收方目前允许(窗口值是经常动态变化的)对发送方发送的数据量。
    窗口字段明确指出了现在允许对方发送的数据量。

    13.检验和 ——
    占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。

    14.紧急指针:
    2个字节,当URG=1,紧急指针才有意义,指出本报文段中的紧急数据的字节数。
    注意:当窗口值为0,也可以发送紧急数据。

    15.选项:
    最长为40字节,当没有选项时,TCP首部长度为20字节。

    TCP对应的协议:
    (1) FTP:定义了文件传输协议,使用21端口。
    (2) Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。
    (3) SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。
    (4) POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。
    (5)HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。

    --------------------------------------------------------------------------------------------------------------------------------------

    UDP数据段格式:   无连接的协议

    源端口号(16)

    目的端口号(16)

    长度(16)

    校验和(16)

    数据(若有的话)

    用户数据报UDP有两个字段:<数据>字段和<首部>字段。
    首部字段很简单,只有8个字节,由4个字段组成,每个字段的长度都是两个字节。
    各字段的意义如下:
    1.源端口
    源端口号,在需要对方回信的时候选用,不需要的时候可用全0
    2.目的端口
    目的端口号,这在终点交付报文时必须要使用到。
    3.长度
    UDP用户数据报的长度(首部字段和数据字段),其最小值是8,也即是只有首部。
    4.检验和
    检测UDP用户数据报在传输的过程中是不是有错,有错就丢弃。

    UDP对应的协议:

    (1) DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。
    (2) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。
    (3) TFTP(Trival File Tran敏感词er Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。

    DNS可以使用FTP或UDP;

    TCP数据段的首部格式:

    源端口号(16)

    目的端口号(16)

    序列号(32)

    确认应答号(32)

    数据偏移(4)

    保留(6)

    代码位(6)

    窗口(16)

    校验和(16)

    紧急指针

    选项(长度可变)

    填充

    数据部份(长度可变)

             

    TCP报文段首部的前20个字节是固定的,后面有4N字节是根据需要而增加的选项,因此首部的最小长度是20字节。
    首部固定部分的个字段的意义如下:
    1.源端口和目的端口字段——
    各占2字节。端口是运输层与应用层的服务接口。
    运输层的复用和分用功能都要通过端口才能实现。

    2.序号字段——
    占4字节。TCP是面向字节流的,一个TCP连接中传送的字节流中的每一个字节都按顺序编号。
    整个要传送的字节流的起始序号必须在连接建立时设置。
    首部中的序号值是指本报文段所发送的数据的第一个字节的序号。

    3.确认号:
    4个字节,期待收到对方下一个报文段的第一个数据字节的序号。
    若确认号=N,表明到序号N-1为止的所有数据都已经正确收到!

    4.数据偏移(即首部长度)——
    占4位,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。“数据偏移”的单位是 32 位字(以 4 字节为计算单位)。 
    因首部中还有长度不确定的选项字段,故数据偏移字段是必要的
    而数据偏移的单位是4字节,则此字段是用来表TCP首部的长度的,最大长度是4*15,60字节,即选项长度不超过40字节.

    5.保留字段——
    占 6 位,保留为今后使用,但目前应置为 0。

    6.紧急URG ——
    当 URG ==1 时,表明紧急指针字段有效。
    它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。 
    而不是按原来的排队顺序传送。
    当URG=1,发送进程就告诉TCP有紧急数据需传送,TCP就会将紧急数据插入到本报文段的最前面,这需要和首部中的紧急指针字段配合使用.

    7.确认ACK(ACKnowlegment):
    当ACK=1,确认号字段才有效,当ACK=0,确认号字段无效。
    TCP规定,在连接建立后所有传送的报文段都必须把ACK置1.

    8.推送PSH(PuSH):
    当两个进程通信时,有时一端的进程希望键入一个命令后,能立即收到对方的响应,这时TCP就可以将PSH=1,
    并立即创建一个报文段发送出去,接收方TCP收到PSH=1,就会尽快交付给接收端进程,而不会再等整个缓存填满后再交付。

    9.复位 RST (ReSeT) —— 
    当 RST=1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接
    RST置1可以用来拒绝一个非法的报文段或者拒绝打开一个连接。

    10.同步SYN:
    在建立连接时用来同步序号,当SYN=1&&ACK=0,表示这是一个请求连接的报文段,
    若对方同意建立连接,则在响应报文段中使得SYN=1&&ACK=1。
    故SYN=1:表示这是一个连接请求和连接接收报文。

    11.终止FIN:
    用来释放一个连接,当FIN=1,表示此报文段发送方的数据发送完毕,并要求释放连接。

    12.窗口:

    我告诉你我的窗口值的目的是要你知道我一次性能接收多大的数据量。
    2个字节,从0开始,窗口指的是发送本报文段的这一方的接收窗口(而不是自己的发送窗口),
    窗口值告诉对方:从本报文段首部的确认号开始算起,
    接收方目前允许(窗口值是经常动态变化的)对发送方发送的数据量。
    窗口字段明确指出了现在允许对方发送的数据量。

    13.检验和 ——
    占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。

    14.紧急指针:
    2个字节,当URG=1,紧急指针才有意义,指出本报文段中的紧急数据的字节数。
    注意:当窗口值为0,也可以发送紧急数据。

    15.选项:
    最长为40字节,当没有选项时,TCP首部长度为20字节。

    TCP对应的协议:
    (1) FTP:定义了文件传输协议,使用21端口。
    (2) Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。
    (3) SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。
    (4) POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。
    (5)HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。

    --------------------------------------------------------------------------------------------------------------------------------------

    UDP数据段格式:

    源端口号(16)

    目的端口号(16)

    长度(16)

    校验和(16)

    数据(若有的话)

    用户数据报UDP有两个字段:<数据>字段和<首部>字段。
    首部字段很简单,只有8个字节,由4个字段组成,每个字段的长度都是两个字节。
    各字段的意义如下:
    1.源端口
    源端口号,在需要对方回信的时候选用,不需要的时候可用全0
    2.目的端口
    目的端口号,这在终点交付报文时必须要使用到。
    3.长度
    UDP用户数据报的长度(首部字段和数据字段),其最小值是8,也即是只有首部。
    4.检验和
    检测UDP用户数据报在传输的过程中是不是有错,有错就丢弃。

    UDP对应的协议:

    (1) DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。
    (2) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。
    (3) TFTP(Trival File Tran敏感词er Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。

    1.   ICMP差错报告报文共有5种

    1>  终点不可达:终点不可达分为:网络不可达,主机不可达,协议不可达,端口不可达,需要分片但DF比特已置为1,以及源路由失败等六种情况,其代码字段分别置为0至5。当出现以上六种情况时就向源站发送终点不可达报文。

    说明:

    端口不可达:UDP的规则之一是:如果收到UDP数据报而且目的端口与某个正在使用的进程不相符,那么UDP返回一个ICMP不可达报文。

    2>  源站抑制:当路由器或主机由于拥塞而丢弃数据报时,就向源站发送源站抑制报文,使源站知道应当将数据报的发送速率放慢。

    3>  时间超过:当路由器收到生存时间为零的数据报时,除丢弃该数据报外,还要向源站发送时间超过报文。当目的站在预先规定的时间内不能收到一个数据报的全部数据报片时,就将已收到的数据报片都丢弃,并向源站发送时间超过报文。

    4>  参数问题:当路由器或目的主机收到的数据报的首部中的字段的值不正确时,就丢弃该数据报,并向源站发送参数问题报文。

    5>  改变路由(重定向)路由器将改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器。

    说明:

    以下几种情况都不会导致产生ICMP差错报文

    1>ICMP差错报文(但是,ICMP查询报文可能会产生ICMP差错报文)

    2>目的地址是广播地址或多播地址的IP数据报

    3>作为链路层广播的数据报

    4>不是IP分片的第一片

    5>源地址不是单个主机的数据报。即源地址不能为零地址、环回地址、广播地址或多播地址。

     

     

     

    这些规则是为了防止过去允许ICMP差错报文对广播分组响应所带来的广播风暴。

     

     

  • 相关阅读:
    Android——inflate 将一个xml中定义的布局找出来
    Android——显示单位px和dip以及sp的区别
    StrategyPattern (策略模式)
    Flyweight(享元模式)
    ComponentPattern (组合模式)
    Java子类属性继承父类属性
    BridgePattern(桥接模式)
    FacadePattern(门面模式)
    装饰者模式,适配器模式,代理模式区别
    DecoratorPattern(装饰器模式)
  • 原文地址:https://www.cnblogs.com/zhangkuilong/p/9297155.html
Copyright © 2020-2023  润新知