TCPIP详解-卷一-协议-14.4一个简单的例子.
TCPip分析总结

·TCP/IP协议详解(图)第一组查找服务器目前,网络的速度发展非常快,学习网络的人也越来越多,稍有网络常识的人都知道TCP/IP协议是网络的基础,是Internet的语言,可以说没有TCP/IP协议就没有互联网的今天。
目前搞网络的人非常多,许多人就是从一把夹线钳,一个测线器联网开始接触网络的,如果只是联网玩玩,知道几个Ping之类的命令就行了,如果想在网络上有更多的发展不管是黑道还是红道,必须要把TCP/IP协议搞的非常明白。
学习过TCP/IP协议的人多都有一种感觉,这东西太抽象了,没有什么数据实例,看完不久就忘了。
本文将介绍一种直观的学习方法,利用分析监测工具IRIS学习TCP/IP,在学习的同时通过IRIS能直观的看到数据的具体传输过程,这对学习TCP/IP能起到事半功倍的效果。
为了初学者更容易理解,本文将搭建一个最简单的网络环境,不包含子网。
二、试验环境1、网络环境如图1所示为了表述方便,下文中208号机即指地址为192.168.113.208的计算机,1号机指地址为192.168.113.1的计算机。
2、操作系统两台机器都为Windows 2000 ,1号机机器作为服务器,安装FTP服务3、协议分析工具Windows环境下常用的工具有:Sniffer Pro、Natxray、IRIS以及windows 2000自带的网络监视器等。
本文选用IRIS作为协议分析工具。
在客户机208号机安装IRIS软件.三、测试过程1、测试例子:将1号机计算机中的一个文件通过FTP下载到208号机中。
2、IRIS的设置。
由于IRIS具有网络监听的功能,如果网络环境中还有其它的机器将抓很多别的数据包,这样为学习带来诸多不便,为了清楚地看清楚上述例子的传输过程首先将IRIS设置为只抓208号机和1号机之间的数据包。
设置过程如下:1) 用热键CTRL+B弹出如图所示的地址表,在表中填写机器的IP地址,为了对抓的包看得更清楚不要添主机的名字(name),设置好后关闭此窗口。
tcp ip协议详解

TCP/IP协议详解这部分简要介绍一下TCP/IP的内部结构,为讨论与互联网有关的安全问题打下基础。
TCP/IP协议组之所以流行,部分原因是因为它可以用在各种各样的信道和底层协议(例如T1和X.25、以太网以及RS-232串行接口)之上。
确切地说,TCP/IP协议是一组包括TCP协议和IP协议,UDP(User Datagram Protocol)协议、ICMP(Internet Control Message Protocol)协议和其他一些协议的协议组。
TCP/IP整体构架概述TCP/IP协议并不完全符合OSI的七层参考模型。
传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。
该模型的目的是使各种硬件在相同的层次上相互通信。
这7层是:物理层、数据链路层、网路层、传输层、话路层、表示层和应用层。
而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。
这4层分别为:应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。
传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。
互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。
网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。
TCP/IP中的协议以下简单介绍TCP/IP中的协议都具备什么样的功能,都是如何工作的:1.IP网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议。
IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;相反,IP层也把从TCP或UDP 层接收来的数据包传送到更低层。
tcpip协议工作原理及讲解

tcpip协议工作原理及讲解
嘿呀!今天咱们来好好聊聊TCP/IP 协议的工作原理呢!
首先哇,咱们得知道TCP/IP 协议到底是啥呀?哎呀呀,简单来说,它就是一组让咱们的电脑、手机等等设备能够在网络上相互交流、传递信息的规则和标准呢!
那它到底是怎么工作的呢?1. 当咱们要发送数据的时候呀,比如说发一封电子邮件或者上传一张照片,数据会被分成一个个小的数据包。
哇塞,这些数据包可神奇啦!2. 然后呢,每个数据包都会被加上一些头部信息,就像是给它们贴上了标签,告诉网络这些数据包要去哪里,从哪里来。
哎呀呀,这可太重要啦!3. 接下来,这些数据包就会通过网络中的各种线路和设备,朝着目标地址前进。
这一路上,它们可能会经过路由器、交换机等等,就像是在一个复杂的迷宫里穿梭!
再说说接收数据的时候吧。
4. 当接收方收到这些数据包的时候,会按照顺序把它们重新组合起来,还原成咱们最初发送的完整数据。
哇,是不是很神奇?5. 如果有数据包丢失或者损坏了,TCP/IP 协议还会负责重新请求发送,确保数据的完整性和准确性。
哎呀呀,这可太贴心啦!
TCP/IP 协议的工作原理真的是超级复杂但又超级重要呢!它让我们能够轻松地在网上浏览网页、聊天、看视频,哇,想想都觉得不可思议!没有它,我们的网络世界可就乱套啦!你说是不是呀?
总之呢,TCP/IP 协议就像是网络世界的交通规则和导航系统,
指引着数据在网络中准确、快速地传输。
哎呀呀,这么厉害的东西,咱们可得好好了解了解呀!。
tcpip详解卷1

tcpip详解卷1序号⽤来标识从T C P发端向T C P收端发送的数据字节流,它表⽰在这个报⽂段中的的第⼀个数据字节。
如果将字节流看作在两个应⽤程序间的单向流动,则 T C P⽤序号对每个字节进⾏计数。
序号是32 bit的⽆符号数,序号到达 2^32-1后⼜从0开始。
T C P为应⽤层提供全双⼯服务。
这意味数据能在两个⽅向上独⽴地进⾏传输。
因此,连接的每⼀端必须保持每个⽅向上的传输数据序号。
T C P提供了⼀种可靠的⾯向连接的字节流运输层服务。
T C P将⽤户数据打包构成报⽂段;它发送数据后启动⼀个定时器;另⼀端对收到的数据进⾏确认,对失序的数据重新排序,丢弃重复数据; T C P提供端到端的流量控制,并计算和验证⼀个强制性的端到端检验和。
三次握⼿1. 请求端(客户)发送⼀个SYN段指明客户打算连接的服务器的端⼝,以及初始序号ISN,这个SYN段为报⽂段1.2. 服务器发回包含服务器的初始序号的SYN报⽂段(2)作为应答.同时,将确认序号设置为客户的ISN加1以对客户的SYN报⽂段进⾏确认,⼀个SYN将占⽤⼀个序号.3. 客户必须将确认序号设置为服务器的ISN加1以对服务器的 SYN报⽂段(3)进⾏确认当⼀端为建⽴连接⽽发送它的 S Y N时,它为连接选择⼀个初始序号。
I S N随时间⽽变化,因此每个连接都将具有不同的 I S N。
RFC 793 [Postel 1981c]指出I S N可看作是⼀个3 2⽐特的计数器,每 4 m s加1。
这样选择序号的⽬的在于防⽌在⽹络中被延迟的分组在以后⼜被传送,⽽导致某个连接的⼀⽅对它作错误的解释。
建⽴⼀个连接需要三次握⼿,⽽终⽌⼀个连接要经过 4次握⼿。
这由 T C P的半关闭(h a l f - c l o s e)造成的。
既然⼀个 T C P连接是全双⼯(即数据在两个⽅向上能同时传递),因此每个⽅向必须单独地进⾏关闭。
这原则就是当⼀⽅完成它的数据发送任务后就能发送⼀个 F I N来终⽌这个⽅向连接。
TCP和IP协议详解

TCP和IP协议详解一、TCP/IP模型TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络协议,是Internet的核心协议。
基于TCP/IP的参考模型将协议分成四个层次,它们分别是链路层、网络层、传输层和应用层。
下图表示TCP/IP模型与OSI模型各层的对照关系。
TCP/IP协议族按照层次由上到下,层层包装。
最上面的是应用层,这里面有http,ftp,等等我们熟悉的协议。
而第二层则是传输层,著名的TCP和UDP协议就在这个层次。
第三层是网络层,IP协议就在这里,它负责对数据加上IP地址和其他的数据以确定传输的目标。
第四层是数据链路层,这个层次为待传送的数据加入一个以太网协议头,并进行CRC编码,为最后的数据传输做准备。
上图清楚地表示了TCP/IP协议中每个层的作用,而TCP/IP协议通信的过程其实就对应着数据入栈与出栈的过程。
入栈的过程,数据发送方每层不断地封装首部与尾部,添加一些传输的信息,确保能传输到目的地。
出栈的过程,数据接收方每层不断地拆除首部与尾部,得到最终传输的数据。
上图以HTTP协议为例,具体说明。
二、数据链路层物理层负责0、1比特流与物理设备电压高低、光的闪灭之间的互换。
数据链路层负责将0、1序列划分为数据帧从一个节点传输到临近的另一个节点,这些节点是通过MAC来唯一标识的(MAC,物理地址,一个主机会有一个MAC地址)。
封装成帧: 把网络层数据报加头和尾,封装成帧,帧头中包括源MAC地址和目的MAC地址。
透明传输:零比特填充、转义字符。
可靠传输: 在出错率很低的链路上很少用,但是无线链路WLAN会保证可靠传输。
差错检测(CRC):接收者检测错误,如果发现差错,丢弃该帧。
三、网络层1.IP协议IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGMP的数据都以IP数据格式传输。
TCPIP详解

什么是TCP/IP模型?TCP/IP模型是一系列网络协议的总称,这些协议的目的,就是使计算机之间可以进行信息交换。
所谓“协议”可以理解成机器之间交谈的语言,每一种协议都有自己的目的。
TCP/IP模型一共包括几百种协议,对互联网上交换信息的各个方面都做了规定。
TCP/IP模型的四层结构这些协议可以大致分成四个层次,上一层的协议都以下一层的协议为基础。
就像下面这张图:从下到上的四层,分别为连接层(Link Layer)、网络层(Internet Layer)、传输层(Transport Layer)、应用层(Application Layer)。
可以这样理解它们的作用:1)连接层负责建立电路连接,是整个网络的物理基础,典型的协议包括以太网、ADSL等等;2)网络层负责分配地址和传送二进制数据,主要协议是IP协议;3)传输层负责传送文本数据,主要协议是TCP协议;4)应用层负责传送各种最终形态的数据,是直接与用户打交道的层,典型协议是HTTP、FTP等。
理解这个结构的关键,在于理解科学家在70年代设计互联网的原始目的,就是为了传输文本。
所有协议最初都是为了这个目标而设计的,互联网架构的核心就是文本对话。
实例:用Telnet建立HTTP对话为了观察文本在互联网上是如何传输的,我们做一个小实验。
第一步:在“开始”菜单中,点击“运行”命令,输入“telnet 80”。
telnet命令本身就是一个应用层协议,它的作用是在两台主机间,建立一个TCP 连接,也就是打开两台主机间文本传输的一个通道。
“telnet 80”表示建立本机与在80端口的一个文本传输通道。
所谓“端口”其实是TCP协议的一个参数,用来帮助TCP协议判断对方主机传来的文本,到底使用的是哪一种应用层协议。
80端口是HTTP协议的端口,就是我们平时浏览网页的端口。
常见端口列表可以参考这里。
另外,与Windows 2000和Windows XP不同,Vista系统默认没有安装Telnet 客户端,大家可以参考微软公司的安装说明自行安装。
TCP-IP协议详解

U A P R S F R C S S Y I G K H T N N
20 字节 固定 首部
检 验 和
选
项
(长 度 可 变)
填
充
推送比特 PSH (PuSH) —— 接收 TCP 收到推送比特 置 1 的报文段,就尽快地交付给接收应用进程,而不 再等到整个缓存都填满了后再向上交付。
比特 0
8
源 端 口
20 字节 固定 首部
检 验 和
选
项
(长 度 可 变)
填
充
保留字段——占 6 bit,保留为今后使用,但目前 应置为 0。
比特 0
8
源 端 口
16
24
目 的 端 口
31
序 号 TCP 首部 确 数据 偏移 保 留 认 号 窗 口 紧 急 指 针
U A P R S F R C S S Y I G K H T N N
20 字节 固定 首部
检 验 和
选
项
(长 度 可 变)
填
充
紧急比特 URG —— 当 URG 1 时,表明紧急指 针字段有效。它告诉系统此报文段中有紧急数据, 应尽快传送(相当于高优先级的数据)。
比特 0
8
源 端 口
16
24
目 的 端 口
31
序 号 TCP 首部 确 数据 偏移 保 留 认 号 窗 口 紧 急 指 针
16
24
目 的 端 口
31
序 号 TCP 首部 确 数据 偏移 保 留 认 号 窗 口 紧 急 指 针
U A P R S F R C S S Y I G K H T N N
20 字节 固定 首部
检 验 和
TCP_IP详解卷一学习心得

TCP/IP学习心得Zhang li个人认为,学习TCP/IP是一个长期的过程,需要在工作和应用当中不断地总结,不断地深入,经常回过头来思考一下,会发现很多意想不到的东西。
写这篇学习心得,是把自己在前期学习过程中的一些思考方法和思路和大家分享一下,有错误的地方,还希望得到指正。
TCP/IP是一组不同层次上的多个协议的组合,因此要首先了解它的分层结构是什么样子的,只有了解了它各层次的作用,才能理解TCP/IP的工作方式。
TCP/IP模型的分层,从下往上分别是:1.链路层:处理电缆的物理接口细节。
协议代表:ARP、RARP2.网络层:处理分组在网络中的活动。
协议代表:IP、ICMP、IGMP3.链路层:为两台主机的应用程序提供端到端的通信。
协议代表:UDP、TCP4.应用层:处理应用程序的细节。
协议代表:HTTP、FTP由于每个层次所承担的任务不一样,各协议的工作的方式不一样,每层封装上层数据的方式也不一样,协议都是人为规定的,是根据某种需求而制定的,因此学习任何协议之前要了解它存在的意义是什么,协议中的每一种规则是对应于什么样的需求而制定的,把自己置于一个创造者的角度来思考,而非仅仅是一个学习者的眼光来看待这些理论,除此之外,还应关注它在实际应用中所发挥的作用,协议存在的最大价值就在于它有使用价值,关注它不同场合的应用更能够深入理解它的本质。
对于TCP/IP,我觉得分层次地学习会有比较清晰的一个思路。
链路层以太网我们接触得比较多的以太网,要学习它的链路层,首先必须要了解它的工作原理,很多介绍网络原理的书籍都会有比较细致的描述,这部分内容是不可以忽略的。
在以太局域网中,任意两台主机是应该可以相互通信的,就跟在茫茫人海中要寻找一个人一样,它们通信时候也要根据对方的“名字”来寻找对方所处的位置,这个“名字”就是它们各自的mac地址,而它们需要对哪方面的信息做沟通,就可以附带一个“类型”的标志来告诉对方,根据它的工作方式也就不难能理解以太帧的封装方式了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
14.4一个简单的例子
让我们从一个简单的例子来了解一个名字解析器与一个名字服务器之间的通信过程。
在sun 主机上运行Telnet 客户程序远程登录到gemini 主机上,并连接daytime 服务器:
在这个例子中,我们引导sun 主机(运行Telnet 客户程序)上的名字解析器来使用位于 (140.252.1.54)的名字服务器。
图14-9显示了这三个系统的排列情况。
和以前提到的一样,名字解析器是客户程序的一部分,并且在Telnet 客户程序与daytime 服务器建立TCP 连接之前,名字解析器就能通过名字服务器获取IP 地址。
在这个图中,省略了sun 主机与140.252.1以太网的连接实际上是一个SLIP 连接的细节(参见封2的插图),因为它不影响我们的讨论。
通过在SLIP 链路上运行tcpdump 程序来了解名字解析器与名字服务器之间的分组交换。
图14-9用于简单DNS 例子的系统
sun 主机上的文件/etc/resolv.conf将告诉名字解析器作什么:
sun%cat/etc/resolv.confnameserver140.252.1.54doma
第1行给出名字服务器—主机 的IP 地址。
最多可说明3个名字服务器行来提供足够的后备以防名字服务器故障或不可达。
域名行说明默认域名。
如果要查找的域名不是一个完全合格的域名(没有以句点结束),那末默认的域
名 将加到待查名后。
图14-10显示了名字解析器与名字服务器之间的分组交换。
图14-10向名字服务器查询主机名 的输出
让tcpdump 程序不再显示每个IP 数据报的源地址和目的地址。
相反,它显示客户
(resolver )的IP 地址140.252.1.29和名字服务器的IP 地址140.252.1.54。
客户的临时端口号为1447,而名字服务器则使用熟知端口53。
如果让tcpdump 程序显示名字而不是IP 地址,它可能会和同一个名字服务器联系(作指示查询),以致产生混乱的输出结果。
第1行中冒号后的字段(1+)表示标识字段为1,加号“+”表示RD 标志(期望递归)为1。
默认情况下,名字解析器要求递归查询方式。
下一个字段为A? ,表示查询类型为A (我们需要一个IP 地址),该问号指明它是一个查询
(不是一个响应)。
待查名字显示在后面:. 。
名字解析器在待查名字后加上句点号指明它是一个绝对字段名。
在UDP 数据报中的用户数据长度显示为37字节:12字节为固定长度的报文首部(图143);21字节为查询名字(图14-6),以及用于查询类型和查询类的4个字节。
在DNS 报文中无需填充数据。
tcpdump 程序的第2行显示的是从名字服务器发回的响应。
1*是标识字段,星号表示设置
AA 标志(授权回答)(该服务器是 域的主域名服务器,其回答在该域内是可相信的。
)输出结果2/0/0表示在响应报文中最后3个变长字段的资源记录数:回答RR 数为2,授权RR 和附加信息RR 数均为0。
tcpdump 仅显示第一个回答,回答类型为A (IP 地址),值为
140.252.1.11。
名字服务器
daytime 服务器 Telnet
客户前 3 行的输出是从 T elnet 客户
这是从
d aytim
e 服务器的输出这是从 T elnet 客户的输出
为什么我们的查询会得到两个回答?这是因为gemini 是多接口主机,因此得到两个IP 地址。
事实上,另一个有用的DNS 工具是一个称为host 的公开程序,它能将查询传递给名字服务器,并显示返回的结果。
如果使用这个程序,就能看到这个多地址主机的两个IP 地址:sun%hostgemini
A 140.252.1.11
A 140.252.3.54
图14-10中的第一个回答与host 命令的第一行输出均是在同一子网
(140.252.1)的IP 地址。
这不是偶然的。
如果名字服务器和发出请求的主机位于相同的网络(或子网),那么
BIND 会排列显示的结果以便在相同网络的地址优先显示。
我们还可以使用其他的地址来访问gemini 主机,但它可能不太有效。
在这个例子
中,使用traceroute 显示出从子网140.252.1到140.252.3的正常路由不经过gemini 主机,而是经过连接这两个网络的另一个路由器。
因此在这种情况下,如果通过其他的IP 地址
(140.252.3.54)来访问gemini 主机,所有分组均需经过额外的一跳。
我们将在25.9节重新回到这个例子来探讨替换路由,那时可使用SNMP 来查看一个路由器的路由表。
还有其他一些程序能很容易地对DNS 进行交互访问。
nslookup 是大多数DNS 实现中包含的程
序。
[AlbitzandLiu1992]的第10章详细介绍了该程序的使用方法。
dig(“域名Internet 搜索(DomainInternetGroper” 程序是另一个查询DNS 服务器的公开工具。
doc(“域名模糊控制(DomainObscenityControl” 是一个使用dig 的外壳脚本程序,它能向合适的名字服务器发送查询来诊断含义不清的域名,并对返回的查询结果进行简单的分析。
附录F 有如何获得这些程序的详细介绍。
在这个例子中要说明的最后一个问题是在查询结果中的UDP 数据长度:69字节。
为说明这些字节需要知道以下两点:
1 在返回的结果中包含查询问题。
2 在返回的结果中会有许多重复的域名,因此使用压缩方式。
在这个例子中,域名
出现了三次。
压缩方法很简单,当一个域名中的标识符是压缩的,它的单计数字节(范围由0~63)中的最高两位将被设置为11。
这表示它是一个16bit 指针而不再是8bit 的计数字节。
指针中的剩下14bit 说明在该DNS 报文中标识符所在的位置(起始位置由标识字段的第一字节起算)。
我们明确说明只要一个标识符是压缩的,就可以使用这种指针,而不一定非要一个完整的域名压缩时才能使用。
因为一个指针可能指向一个完整的域名,也可能只指向域名的结尾部分
(这是因为给定域名的结尾标识符是相同的)。
图14-11显示了对应于图14-10的第2行的DNS 应答的格式。
我们也显示了IP 首部和UDP 首部来重申DNS 报文被封装在UDP 数据报中。
还明确显示了在问题部分的域名中各标识符的计数字节。
返回的两个回答除了返回的IP 地址不同外,其余都是一样的。
在这个例子中,每个回答中的指针值为12,表示从DNS 首部开始的偏移量。
在这个例子中最后要注意的是使用telnet 命令后输出的第2行,这里重复一下:
sun%telnetgeminidaytime 我们只键入gemini
Trying140.252.1.11...
. 但Telnet 客户输出FQDN
图14-11对应于图14-10中第2行DNS 应答的格式
我们仅仅输入了主机名(gemini 而不是FQDN ,但Telnet 客户程序部输出了FQDN 。
这是由于Telnet 程序通过IP 数据报
UDP 数据报
DNS 报文
IP 首部
域名
UDP 首部 DNS 首部类型类指针类型类长度地址问题 ( 图 14-5 回答 #1(RR ( 图 14-8 回答 #2(RR ( 图 14-8
字节字节 12 字
节 25 字节 21 字节 8 字节 20 字节
调用名字解析器(gethostbyname )对输入的名字进行查询,返回的结果包括IP 地址和FQDN 。
Telnet 程序就输出它试图与之建立TCP 连接的IP 地址,当连接建立后,它就输出FQDN 。
如果在输入Telnet 命令后间隔很长时间才显示IP 地址,这个时延是由名字解析器和名字服务器在由域名到IP 地址的解析所引起的。
而显示Trying 到显示Connectedto 的时延则是由客户与服务器建立TCP 连接所引起的,与DNS 无关。