TCPIP协议详解卷1学习笔记-IP校验和与ICMP协议

合集下载

TCPIP详解学习笔记

TCPIP详解学习笔记

TCP/IP详解学习笔记(1)-基本概念TCP/IP详解学习笔记(2)-数据链路层TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议TCP/IP详解学习笔记(4)-ICMP协议,ping和TracerouteTCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节TCP/IP详解学习笔记(6)-UDP协议TCP/IP详解学习笔记(7)-广播和多播,IGMP协议TCP/IP详解学习笔记(8)-DNS域名系统TCP/IP详解学习笔记(9)-TCP协议概述TCP/IP详解学习笔记(10)-TCP连接的建立与中止TCP/IP详解学习笔记(11)-TCP交互数据流,成块数据流TCP/IP详解学习笔记(12)-TCP的超时与重传TCP/IP详解学习笔记(13)-TCP坚持定时器,TCP保活定时器TCP/IP详解学习笔记(1)-基本概念为什么会有TCP/IP协议在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别。

就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样。

计算机使用者意识到,计算机只是单兵作战并不会发挥太大的作用。

只有把它们联合起来,电脑才会发挥出它最大的潜力。

于是人们就想方设法的用电线把电脑连接到了一起。

但是简单的连到一起是远远不够的,就好像语言不同的两个人相互见了面,完全不能交流信息。

因而他们需要定义一些共通的东西来进行交流,TCP/IP就是为此而生。

TCP/IP不是一个协议,而是一个协议族的统称。

里面包括了IP协议,IMCP协议,TCP协议,以及我们更加熟悉的http、ftp、pop3协议等。

电脑有了这些,就好像学会了外语一样,就可以和其他的计算机终端做自由的交流了。

TCP/IP协议分层提到协议分层,我们很容易联想到ISO-OSI的七层协议经典架构,但是TCP/IP协议族(五层架构)的结构则稍有不同。

如图所示:ISO-OSI的七层协议架构TCP/IP协议族应用层Application (X.400, FTAM, VT)应用层Application (SMTP, TELNET, FTP)PresentationSessionTransport传输层Transport(Transmission ControlProtocol)Network网络层Internet(Internet Protocol)Data Link数据链路层NetworkInterfacePhysical物理层HardwareTCP/IP协议族按照层次由上到下,层层包装。

TCPIP详解学习笔记(5)--ICMP:internet控制报文协议

TCPIP详解学习笔记(5)--ICMP:internet控制报文协议

TCPIP详解学习笔记(5)--ICMP:internet控制报⽂协议1.概述ICMP是(Internet Control Message Protocol)Internet控制报⽂协议。

它是TCP/IP协议族的⼀个⼦协议,⽤于在IP主机、路由器之间传递控制消息。

控制消息是指⽹络通不通、主机是否可达、路由是否可⽤等⽹络本⾝的消息。

这些控制消息虽然并不传输⽤户数据,但是对于⽤户数据的传递起着重要的作⽤。

ICMP报⽂是在IP数据报内部被传输的。

ICMP报⽂的格式如图所⽰。

类型字段:可以有15个不同的值,来描述特定类型的ICMP报⽂。

代码:进⼀步描述类型的不同条件检验和:ICMP的检验和是必需的。

2.ICMP报⽂的类型各种类型的ICMP报⽂如图所⽰。

不同类型由报⽂中的类型字段和代码字段共同决定。

图中最后两列表明ICMP报⽂是⼀份查询报⽂还是⼀份差错报⽂。

以下情况不会导致产⽣ICMP差错报⽂:ICMP差错报⽂(避免⽆休⽌的循环下去,但是ICMP查询报⽂有可能产⽣ICMP差错报⽂)⽬的地址是⼴播地址或者多博地址的IP数据报作为链路层⼴播的数据报不是IP分⽚的第⼀⽚。

源地址不是单个主机的数据报。

这就是说,源地址不能为零地址,环回地址,⼴播地址或者多博地址。

3.ICMP地址掩码请求与应答ICMP地址掩码请求与应答⽤于⽆盘系统引导过程中获取⾃⼰的⼦⽹掩码。

系统⼴播它 ICMP请求报⽂,或者使⽤BOOTP协议。

ICMP地址掩码请求和应答报⽂如图所⽰。

ICMP报⽂中的标识符和序列号字段由发送端任意选择指定。

4.ICMP时间戳请求与应答ICMP时间戳请求允许系统向另⼀个系统查询当前的时间。

返回的建议值是⾃午夜开始计算的毫秒数,协调的同⼀时间(UTC)。

ICMP时间戳请求和应答报⽂如图所⽰。

请求端填写发起时间戳,然后发送报⽂。

应答系统收到请求报⽂时填写接收时间戳。

在发送应答时填写发送时间戳。

5.ICMP端⼝不可达差错ICMP端⼝不可达差错报⽂,是收到⼀个UDP数据报⽽⽬的端⼝与某个正在使⽤的进程不相符,则返回⼀个ICMP不可达报⽂。

TCPIP各层的协议软考必考,就是记不住

TCPIP各层的协议软考必考,就是记不住

TCPIP各层的协议软考必考,就是记不住TCP/IP各层的协议很多,不容易记住,软考中信息系统项目管理工程师必考内容,一张图就可以记住了。

TCP/IP各层协议教程书上虽然介绍了这些协议,但是就单个协议分别介绍的,很容易忘了这个协议属于那一层,以及属于底层哪个协议。

应用层协议1.运行在TCP协议之上1、POP3,全名为“Post Office Protocol - Version 3”,即“邮局协议版本3”。

是TCP/IP协议族中的一员,由RFC1939 定义。

本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。

提供了SSL加密的POP3协议被称为POP3S。

2、FTP(File Transport Protocol,文件传输协议)是网络上两台计算机传送文件的协议,是通过Internet将文件从一台计算机传输到另一台计算机的一种途径。

它的传输模式包括Bin(二进制)和ASCII(文本文件)两种。

FTP在客户机与服务器之间建立两条TCP连线,传送控制信息(21号端口)和传送文件内容(20端口)。

3、HTTP(超文本传输协议),WWW服务器传送超文本到浏览器的传送协议4、SMTP(Simple Mail Transfer Protocol,简单邮件传输协议),是一种提供可靠且有效的电子邮件传输的协议。

它建立在FTP 之上的一种邮件服务,主要传输邮件信息,提供与邮件有关的通知。

5、Telenet(远程登录协议)是登陆和仿真程序,基本功能是允许用户登陆进入远程计算机系统。

2.运行在UDP协议之上1、DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),所有的IP网络设定数据都有DHCP集中管理,并负责处理客户的DHCP请求;而客户端会使用从服务器分配下来的IP环境数据。

DHCP分配的IP地址可以分为三种方式,分别为固定分配、动态分配、自动分配。

2、TFTP(Trivial File Transfer Protocol,简单文件传输协议)是用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。

TCPIP详解-卷一-协议-6.4ICMP时间戳请求与应答

TCPIP详解-卷一-协议-6.4ICMP时间戳请求与应答

6.4ICMP 时间戳请求与应答ICMP 时间戳请求允许系统向另一个系统查询当前的时间。

返回的建议值是自午夜开始计算的毫秒数,协调的统一时间(CoordinatedUniversalTime,UTC )(早期的参考手册认为UTC 是格林尼治时间)。

这种ICMP 报文的好处是它提供了毫秒级的分辨率,而利用其他方法从别的主机获取的时间(如某些Unix 系统提供的rdate 命令)只能提供秒级的分辨率。

由于返回的时间是从午夜开始计算的,因此调用者必须通过其他方法获知当时的日期,这是它的一个缺陷。

ICMP 时间戳请求和应答报文格式如图6-6所示。

图6-6ICMP 时间戳请求和应答报文请求端填写发起时间戳,然后发送报文。

应答系统收到请求报文时填写接收时间戳,在发送应答时填写发送时间戳。

但是,实际上,大多数的实现把后面两个字段都设成相同的值(提供三个字段的原因是可以让发送方分别计算发送请求的时间和发送应答的时间)。

6.4.1举例我们可以写一个简单程序(取名为icmptime ),给某个主机发送ICMP 时间戳请求,并打印出返回的应答。

它在我们的小互联网上运行结果如下:程序打印出ICMP 报文中的三个时间戳:发起时间戳(orig )、接收时间戳(recv )以及发送时间戳(xmit )。

正如我们在这个例子以及下面的例子中所看到的那样,所有的主机把接收时间戳和发送时间戳都设成相同的值。

我们还能计算出往返时间(rtt ),它的值是收到应答时的时间值减去发送请求时的时间值。

difference 的值是接收时间戳值减去发起时间戳值。

这些值之间的关系如图6-7所示。

图6-7icmptime 程序输出的值之间的关系如果我们相信RTT 的值,并且相信RTT 的一半用于请求报文的传输,另一半用于应答报文的传输,那么为了使本机时钟与查询主机的时钟一致,本机时钟需要进行调整,调整值是difference 减去RTT 的一半。

在前面的例子中,bsdi 的时钟比sun 的时钟要慢7ms 和8ms 。

TCPIP详解-卷一-协议-6.4ICMP时间戳请求与应答

TCPIP详解-卷一-协议-6.4ICMP时间戳请求与应答

6.4ICMP 时间戳请求与应答ICMP 时间戳请求允许系统向另一个系统查询当前的时间。

返回的建议值是自午夜开始计算的毫秒数,协调的统一时间(CoordinatedUniversalTime,UTC )(早期的参考手册认为UTC 是格林尼治时间)。

这种ICMP 报文的好处是它提供了毫秒级的分辨率,而利用其他方法从别的主机获取的时间(如某些Unix 系统提供的rdate 命令)只能提供秒级的分辨率。

由于返回的时间是从午夜开始计算的,因此调用者必须通过其他方法获知当时的日期,这是它的一个缺陷。

ICMP 时间戳请求和应答报文格式如图6-6所示。

图6-6ICMP 时间戳请求和应答报文请求端填写发起时间戳,然后发送报文。

应答系统收到请求报文时填写接收时间戳,在发送应答时填写发送时间戳。

但是,实际上,大多数的实现把后面两个字段都设成相同的值(提供三个字段的原因是可以让发送方分别计算发送请求的时间和发送应答的时间)。

6.4.1举例我们可以写一个简单程序(取名为icmptime ),给某个主机发送ICMP 时间戳请求,并打印出返回的应答。

它在我们的小互联网上运行结果如下:程序打印出ICMP 报文中的三个时间戳:发起时间戳(orig )、接收时间戳(recv )以及发送时间戳(xmit )。

正如我们在这个例子以及下面的例子中所看到的那样,所有的主机把接收时间戳和发送时间戳都设成相同的值。

我们还能计算出往返时间(rtt ),它的值是收到应答时的时间值减去发送请求时的时间值。

difference 的值是接收时间戳值减去发起时间戳值。

这些值之间的关系如图6-7所示。

图6-7icmptime 程序输出的值之间的关系如果我们相信RTT 的值,并且相信RTT 的一半用于请求报文的传输,另一半用于应答报文的传输,那么为了使本机时钟与查询主机的时钟一致,本机时钟需要进行调整,调整值是difference 减去RTT 的一半。

在前面的例子中,bsdi 的时钟比sun 的时钟要慢7ms 和8ms 。

TCPIP协议详解

TCPIP协议详解

TCPIP协议详解一、引言TCPIP协议是互联网通信的重要协议之一,它是一种基于分层架构的网络协议,用于在计算机网络中进行数据传输和通信。

本文将详细解释TCPIP协议的工作原理、协议分层结构、数据包格式和相关应用。

二、工作原理1. 数据传输过程在TCPIP协议中,数据传输过程分为发送端和接收端两个阶段。

发送端将数据分割成小的数据包,并通过网络传输给接收端。

接收端根据数据包的序号和校验和进行数据的重组和校验,确保数据的完整性和准确性。

2. IP地址和端口号IP地址是用于标识网络中的设备的唯一地址,它由32位二进制数表示。

端口号是用于标识设备上的应用程序的地址,它由16位二进制数表示。

在数据传输过程中,发送端和接收端通过IP地址和端口号进行通信。

三、协议分层结构TCPIP协议采用分层结构,分为应用层、传输层、网络层和数据链路层。

每一层都有特定的功能和任务。

1. 应用层应用层提供了用户与网络之间的接口,它负责处理应用程序的数据传输。

常见的应用层协议包括HTTP、FTP和SMTP等。

2. 传输层传输层负责在网络中的两个主机之间建立可靠的数据传输连接。

它提供了两种协议:TCP和UDP。

TCP协议提供可靠的数据传输,确保数据的完整性和顺序性;UDP协议提供不可靠的数据传输,适用于实时性要求较高的应用。

3. 网络层网络层负责将数据包从源主机传输到目标主机。

它使用IP协议进行数据包的路由和寻址。

4. 数据链路层数据链路层负责将数据包从网络层传输到物理层。

它将数据包封装成帧,并通过物理介质进行传输。

四、数据包格式TCPIP协议的数据包格式如下:1. 数据包头部数据包头部包含了源IP地址、目标IP地址、源端口号、目标端口号等信息。

它的长度为固定的20字节。

2. 数据包数据部分数据包的数据部分用于存储实际的数据信息。

它的长度可以根据需要进行调整。

3. 数据包校验和数据包校验和用于验证数据的完整性。

发送端在发送数据包时计算校验和,并将其附加在数据包中。

tcpip协议详解,pdf

tcpip协议详解,pdf

编号:_______________本资料为word版本,可以直接编辑和打印,感谢您的下载tcpip协议详解,pdf甲方:___________________乙方:___________________日期:___________________tcpip协议详解,pdf篇一:tcpip详解-卷一-协议-3.11小结3.11小结本章开始描述了ip首部的格式,并简要讨论了首部中的各个字段。

我们还介绍了ip路由选择,并指出主机的路由选择可以非常简单:如果目的主机在直接相连的网络上,那么就把数据报直接传给目的主机,否则传给默认路由器。

在进行路由选择决策时,主机和路由器都使用路由表。

在表中有三种类型的路由:特定主机型、特定网络型和默认路由型。

路由表中的表目具有一定的优先级。

在选择路由时,主机路由优先于网络路由,最后在没有其他可选路由存在时才选择默认路由。

ip路由选择是通过逐跳来实现的。

数据报在各站的传输过程中目的ip地址始终不变,但是封装和目的链路层地址在每一站都可以改变。

大多数的主机和许多路由器对于非本地网络的数据报都使用默认的下一站路由器。

a类和b类地址一般都要进行子网划分。

用于子网号的比特数通过子网掩码来指定。

我们为此举了一个实例来详细说明,即作者所在的子网,并介绍了变长子网的概念。

子网的划分缩小了internet 路由表的规模,因为许多网络经常可以通过单个表月就可以访问了。

接口和网络的有关信息通过ifconfig 和netstat命令可以获得,包括接口的ip地址、子网掩码、广播地址以及mtu等。

在本章的最后,我们对internet 协议族潜在的改进建议一下一代ip进行了讨论。

习题3.1环回地址必须是127.0.0.1 吗?3.2在图3-6中指出有两个网络接口的路由器。

3.3子网号为16bit的a类地址与子网号为8bit的b类地址的子网掩码有什么不同?3.4阅读RFc1219[tsuchiya1991],学习分配子网号和主机号的有关推荐技术。

《TCPIP详解卷1:协议》第1章概述-读书笔记

《TCPIP详解卷1:协议》第1章概述-读书笔记

《TCPIP详解卷1:协议》第1章概述-读书笔记章节回顾:1、引⾔很多不同的⼚家⽣产各种型号的计算机,它们运⾏完全不同的操作系统,但TCP/IP协议族允许它们互相进⾏通信。

TCP/IP起源于60年代末美国政府资助的⼀个分组交换⽹络研究项⽬,到90年代已发展成为计算机之间最常应⽤的组⽹形式。

2、分层⽹络协议通常分不同层次进⾏开发,每⼀层分别负责不同的通信功能。

⼀个协议族,如TCP/IP是⼀组不同层次上的多个协议的组合。

TCP/IP通常被认为是⼀个四层协议系统。

每⼀层负责不同的功能:(1)链路层也称作数据链路层或⽹络接⼝层。

通常包括操作系统中的设备驱动程序和计算机中对应的⽹络接⼝卡。

它们⼀起处理与电缆(或其他任何传输媒介)的物理接⼝细节。

(2)⽹络层也称作互联⽹层,处理分组在⽹络中的活动,例如分组的选路。

在TCP/IP协议族中,⽹络层协议包括IP协议(⽹际协议),ICMP协议(Internet互联⽹控制报⽂协议),以及IGMP协议(Internet组管理协议)。

(3)运输层为两台主机上的应⽤程序提供端到端的通信。

在TCP/IP协议族中,有两个互不相同的传输协议:TCP(传输控制协议)和UDP(⽤户数据报协议)。

TCP为两台主机提供⾼可靠性的数据通信。

它所做的⼯作包括把应⽤程序交给它的数据分成合适的⼩块交给下⾯的⽹络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。

UDP为应⽤层提供⼀种⾮常简单的服务。

它只是把称作数据报的分组从⼀台主机发送到另⼀台主机,但并不保证该数据报能到达另⼀端。

(4)应⽤层处理特定的应⽤程序细节。

例如:Telnet远程登录、FTP⽂件传输协议、SMTP简单邮件传送协议,SNMP简单⽹络管理协议等。

假设在⼀个局域⽹(LAN)如以太⽹中有两台主机,⼆者都运⾏FTP协议,图1-2列出了该过程所涉及到的所有协议。

说明:(1)⼤多数⽹络应⽤程序都被设计成客户-服务器模式,服务器为客户提供某种服务。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

TCP/IP协议详解卷1学习笔记-IP校验和与ICMP协议
IP数据报的检验和:
为了计算一份数据报的I P检验和,首先把检验和字段置为0。

然后,对首部中每个16 bit
进行二进制反码求和(整个首部看成是由一串16 bit的字组成),结果存在检验和字段中。


收到一份I P数据报后,同样对首部中每个16 bit进行二进制反码的求和。

由于接收方在计算过
程中包含了发送方存在首部中的检验和,因此,如果首部在传输过程中没有发生任何差错,
那么接收方计算的结果应该为全1。

这个是原文。

看一些网络程序的源码时,发现几乎都是用同一种程序来计算检验和的:
USHORT checksum(USHORT *buffer, int size) {
unsigned long cksum=0;
while(size >1) {
cksum+=*buffer++;
size -=sizeof(USHORT);
}
if(size ) {
cksum += *(UCHAR*)buffer;
}
cksum = (cksum >> 16) + (cksum & 0xffff);
cksum += (cksum >>16);
return (USHORT)(~cksum);
}
摘自 ping 源码。

大家都用的东西看来是不会错的了,不过还是要按协议说的方法用笨办法试试看。

今天看的是ICMP协议,基本格式:
|-------- IP 数据报 ------------+
+--20 bytes --+----------------+
+ IP首部 + ICMP 报文 +
+------------------------------+
ICMP报文还是通过IP报文发送出去的。

ICMP的格式:
+----8---+----8---+-------- --------+
+ 8位类型 + 8位代码 + 16位检验和 +
+-----------------------------------+
+ 不同类型有不同的内容和长度 +
+-----------------------------------+
ICMP的报文类型有很多种,而每种类型里又有多种代码。

报文分查询报文和差错报文。

差错报文不会嵌套产生。

差错报文中包含导致差错的IP首部和数据部分的前8个字节,并据此与具体的协议和进程联系起来。

因为TCP和UDP的前8个字节中包含有源端口和目的端口,可以据此查找到与此联系的用户进程。

大部分的实现中只返回8个字节,有系统返回的是前64个字节。

如果是UDP报文产生差错,而又没有预先通过 connect与指定端口联系起来,用户进程将收不到这个差错报文。

内核在处理后将丢弃。

讨论了部分tftp实现中的的简单的差错重传机制,等待5秒重传,已被RFC 禁用。

我在串口通讯中用的还是这种简单的重传方式,看来要改了。

详细讨论了时间截请求与回复的过程,以及地址掩码请求与回应数据包的格式。

对端口不可达错误,差错报文为:
+----------------- 端口不可达的ICMP差错报文
-------------------------------+
+ 以太网首部 + IP首部 + ICMP首部 + 产生差错的IP首部 + IP 报数据域 +
+- 14 bytes +--- 20 bytes ---+ 8 bytes +---- 20 bytes ----+-- 8 bytes -+
根据标准,列出5种情况下,不会产生差错报文,基本上都是为了避免出现ICMP广播风暴的。

这个协议因为类型与具体的细节太多,比较的费事,不过也比较简单。

如果不做协议的分析,倒不需要对每个类型都搞得十分清楚。

好像这个并没有多少利用的空间。

不过如果在一个主机试图发起连接时,发送一个伪装的ICMP包告诉它“端口不可达”,结果会怎么样?值得试试。

第2卷第13章 HTTP协议
这一章对HTTP的请求与响应格式做了简单的介绍。

由于所有传送的内容基于ASCII,虽然也会传送其他二进制,如图片,MIME文件,但是其本是还是可以从请求或响应头中看出传送的类型,分析起来就没什么难度了。

这些可以用telnet 或者 nc做一个真实的会话过程。

把后面一章(第2卷第14章 HTTP服务器的分组)看完,准备自已动手做一个小的Web服务器。

公司下一步的计划是把大部分的硬件都做成可直接由浏览器操作的。

而这些必须要由一个 web服务器来驱动。

我是作软件的,本来不需要我去关心这个。

不过自己动手作一下,实践一下总不是坏事,而且可以跟他们交流一下。

看了许多有关web服务器的漏洞导致的严重后果,这个得从一开始就要注意。

相关文档
最新文档