TCP/IP详解卷1:协议

一、概述

TCPIP协议族中不同层次的协议.png

TCP/IP四层协议的下三层都是在内核中处理的。路由器可连接两个不同的网络,如以太网和令牌环网相连。网桥在链路层上互连。ARP与RARP是链路层的协议。ICMP和IGMP报文都被封装在IP数据报中,但它们与IP在同一层(是IP的附属协议)。


数据进入协议栈时的封装过程.png

许多应用程序都可以使用 TCP或UDP来传送数据。运输层协议在生成报文首部时要存入一个应用程序的标识符。TCP和UDP都用一个16bit的端口号来表示不同的应用程序(存放在报文头部,不像IP报文头及以以太网报文头用8bit的协议域区分)。在Linux下vim /etc/services可查看各服务端口号。RFC(Request for Comment)。

二、链路层

IEEE 802.2802.3(RFC 1042)和以太网的封装格式(RFC 894).png

其中长度指后续数据的字节长度,但不包括 CRC检验码。帧前还有8字节的前导
而在 802帧格式中,目的服务访问点( Destination Service Access Point,
DSAP)和源服务访问点(Source Service Access Point, SSAP)的值都设为0xaa。Ctrl字段(控制)的值设为3。随后的3个字节org code都置为0。CRC字段用于帧内后续字节差错的循环冗余码检验(检验和)(它也被称为FCS或帧检验
序列)。802.3标准定义的帧和以太网的帧都有最小长度要求。 802.3规定数据部分必须至少为38字节,而对于以太网,则要求最少要有46字节。为了保证这一点,必须在不足的空间插入填充(pad)字节。
SLIP:串行线路IP,全称是Serial Line IP。它是一种在串行线路上对I P数据报进行封装的简单形式。
下面的规则描述了SLIP协议定义的帧格式:

  1. IP数据报以一个称作END(0xc0)的特殊字符结束。同时,为了防止数据报到来之前的线路噪声被当成数据报内容,大多数实现在数据报的开始处也传一个 END字符(如果有线路噪声,那么END字符将结束这份错误的报文。这样当前的报文得以正确地传输,而前一个错误报文交给上层后,会发现其内容毫无意义而被丢弃)。
  2. 如果I P报文中某个字符为 END,那么就要连续传输两个字节 0xdb和0xdc来取代它。
    0xdb这个特殊字符被称作SLIP的ESC字符,但是它的值与ASCII码的ESC字符(0x1b)不同。
  3. 如果IP报文中某个字符为SLIP的ESC字符,那么就要连续传输两个字节 0xdb和0xdd来
    取代它。


    SLIP报文的封装.png

    PPP,点对点协议修改了SLIP协议中的所有缺陷。每一帧都以标志字符0x7e开始和结束。紧接着是一个地址字节,值始终是 0xff,然后是一
    个值为0x03的控制字节。


    PPP数据帧的格式.png

    环回接口
    大多数的产品都支持环回接口( Loopback Interface),以允许运行在同一台主机上的客户
    程序和服务器程序通过 TCP/IP进行通信。传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上。这是因为广播传送和多播传送的定义包含主机本身

三、IP:网际协议

IP数据报格式.png

服务类型(TOS)字段包括一个3bit的优先权子字段(现在已被忽略),4bit的TOS子字
段和1bit未用位但必须置0。4bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最
小费用。4bit中只能置其中1bit。如果所有4 bit均为0,那么就意味着是一般服务。Telnet和Rlogin这两个交互应用要求最小的传输时延,因为人们主要用它们来传输少量的
交互数据。另一方面, FTP文件传输则要求有最大的吞吐量。最高可靠性被指明给网络管理
(SNMP)和路由选择协议。用户网络新闻( Usenet news, NNTP)是唯一要求最小费用的应
用。总长度字段是IP首部中必要的内容,因为一些数据链路(如以太网)需要填充一些数据以达到最小长度。尽管以太网的最小帧长为 46字节,但是IP数据可能会更短。如果没有总长度字段,那么IP层就不知道46字节中有多少是IP数据报的内容。首部检验和计算方法:https://www.cnblogs.com/cgc0415/p/6097282.html

四、ARP:地址解析协议

ARP高效运行的关键是由于每个主机上都有一个 ARP高速缓存。这个高速缓存存放了最近地址到硬件地址之间的映射记录。高速缓存中每一项的生存时间一般为20分钟,起始时间从被创建时开始算起,命令arp -a。


image.png

其中帧类型为0x0806。 硬件类型字段表示硬件地址的类型。它的值为 1即表示以太网地址。协议类型字段表示要映射的协议地址类型。它的值为0x0800即表示IP地址。(硬件)和 (协议)用来描述ARP分组中的各个字段。例如,一个 ARP请求分组询问协议地址(这里是IP地址)对应的硬件地址(这里是以太网地址)。接下来的两个1字节的字段,硬件地址长度和协议地址长度分别指出硬件地址和协议地址的长度,以字节为单位。对于以太网上IP地址的ARP请求或应答来说,它们的值分别为 6和4。操作字段指出四种操作类型,它们是 ARP请求(值为1)、ARP应答(值2)、RARP请求(值为3)和RARP应答(值为4)。

五、RARP:逆地址解析协议

具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取IP地址。但是无盘机,如X终端或无盘工作站,则需要采用其他方法来获得IP地址。网络上的每个系统都具有唯一的硬件地址,它是由网络接口生产厂家配置的。无盘系统的RARP实现过程是从接口卡上读取唯一的硬件地址,然后发送一份RARP请求(一帧在网络上广播的数据),请求某个主机响应该无盘系统的IP地址(在RARP应答中)。RARP请求或
应答的帧类型代码为0x8035,而且RARP请求的操作代码为3,应答操作代码为4。对应于ARP,RARP请求以广播方式传送,而RARP应答一般是单播传送的(可能有多个服务器,都会单播应答)。RARP服务器的复杂性在于,服务器一般要为多个主机(网络上所有的无盘系统)提供硬件地址到I P地址的映射。该映射包含在一个磁盘文件中(在Unix系统中一般位于/etc/ethers目中)。由于内核一般不读取和分析磁盘文件,因此RARP服务器的功能就由用户进程来提供,而不是作为内核的TCP/IP实现的一部分。

六、ICMP:Internet控制报文协议

ICMP报文是在I P数据报内部被传输的


image.png

image.png

类型字段可以有15个不同的值,以描述特定类型的ICMP报文。某些ICMP报文还使用代码字段的值来进一步描述不同的条件。在对ICMP差错报文进行响应时,永远不会生成另一份ICMP差错报文(如果没有这个限制规则,可能会遇到一个差错产生另一个差错的情况,而差错再产生差错,这样会无休止地循环下去)。


image.png

ICMP地址掩码请求用于无盘系统在引导过程中获取自己的子网掩码,无盘系统获取子网掩码的另一个方法是 BOOTP协议。
image.png

ICMP报文中的标识符和序列号字段由发送端任意选择设定,这些值在应答中将被返回。这样,发送端就可以把应答与请求进行匹配。

七、Ping程序

链接:https://pan.baidu.com/s/1WCXoLbvr6ORodbg1gJfInw

提取码:4s89

持续更新中……

分组交换、多路复用。时分复用(TDM)和静态复用。

你可能感兴趣的:(TCP/IP详解卷1:协议)