TCP/IP协议、Http协议、ftp协议

TCP/IP起源于20世纪60年代末美国政府资助的一个网络分组交换研究项目,TCP/IP是发展至今最成功的通信协议,它被用于当今所构筑的最大的开放式网络系统Internet之上。
TCP和IP是两个独立且紧密结合的协议,负责管理和引导数据报文在Internet上的传输。二者使用专门的报文头定义每个报文的内容。TCP负责和远程主机的连接,IP负责寻址,使报文被送到其该去的地方。

TCP/IP协议簇自下而上分为:链路层,网络层,运输层和应用层四个层次,如图:
这里写图片描述
这里写图片描述
这里写图片描述

链路层

包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。链接层位于整个网络协议suite的最低一层,与硬件关系密切,比如以太网,token ring都是位于这一层。

网络层

处理分组在网络中的活动,例如分组的选路。网络层协议包括IP协议(网际协议),ICMP协议(Internet互联网控制报文协议),以及IGMP协议(Internet组管理协议)。网络层和运输层之间的区别是最为关键的:网络层(IP)提供点到点的服务,而运输层(TCP和UDP)提供端到端的服务。

运输层

为两台主机上的应用程序提供端到端的通信。有两个互不相同的传输协议: TCP(传输控制协议)和UDP(用户数据报协议)。TCP提供高可靠性的数据通信。而UDP则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。任何必需的可靠性必须由应用层来提供。

应用层

负责处理特定的应用程序细节。


2、链路层
SLIP:串行线路IP,SLIP的全称是Serial Line IP。它是一种在串行线路上对IP数据报进行封装的简单形式,它的传输速率通常较低(19200b/s或更低),下面的规则描述了SLIP协议定义的帧格式:
1) IP数据报以一个称作END(0xc0)的特殊字符结束。
2) 如果IP报文中某个字符为END,那么就要连续传输两个字节0xdb和0xdc来取代它。
3) 如果IP报文中某个字符为SLIP的ESC字符,那么就要连续传输两个字节0xdb和0xdd来取代它。

SLIP是一种简单的帧封装方法,还有一些值得一提的缺陷:
1) 每一端必须知道对方的IP地址。没有办法把本端的IP地址通知给另一端。
2) 数据帧中没有类型字段(类似于以太网中的类型字段)。
3) SLIP没有在数据帧中加上检验和(类似于以太网中的CRC字段)。

PPP:点对点协议

PPP包括以下三个部分:
1) 在串行链路上封装IP数据报的方法。PPP既支持数据为8位和无奇偶检验的异步模式,还支持面向比特的同步链接。
2) 建立、配置及测试数据链路的链路控制协议(LCP)。它允许通信双方进行协商,以确定不同的选项。
3) 针对不同网络层协议的网络控制协议(NCP)体系。

PPP比SLIP具有下面这些优点:
1) PPP支持在单根串行线路上运行多种协议,不只是IP协议。
2)每一帧都有循环冗余检验。
3)通信双方可以进行IP地址的动态协商。
4)与CSLIP类似,对TCP和IP报文首部进行压缩。
5)链路控制协议可以对多个数据链路选项进行设置。

最大的传输单元:MTU
以太网和802.3对数据帧的长度都有一个限制,其最大值分别是1500和1492字节。链路层的这个特性称作MTU,最大传输单元。每个网络的链路层就可能有不同的MTU,两台通信主机路径中的最小MTU为路径MTU。

IP 网际协议

IP(internet protocol)是TCP/IP协议簇的基础,在链接层中封装的IP datagram是网络间数据传输的一个基本单元,包括传输层的TCP,UDP等协议都是基于IP协议的。IP协议有个特点:IP协议是无连接的。我们知道,TCP是面向连接的,是可靠的传输协议;而UDP是无连接的,相应的也就不可靠,无法保证数据确实传输到了目的地。TCP面向连接,需要经过3次握手才能建立起可靠的数据传输的全双工的通道,这就导致了需要保存连接的状态等信息,增加实现的复杂程度。UDP无连接,自然也就更容易实现,维护起来也就更简单些。在现在的应用中,UDP与TCP都应用地很广泛,所以IP协议并不需要面向连接,因为需要可靠性的TCP自身去实现可靠性就行了。

IP路由表的每一项所包含的信息:
1) 目的IP地址。
2) 下一站(或下一跳)路由器的IP地址,或者有直接连接的网络IP地址。
3) 标志。其中一个标志指明目的IP地址是网络地址还是主机地址,另一个标志指明下一站路由器是否为真正的下一站路由器,还是一个直接相连的接口。
4) 为数据报的传输指定一个网络接口。

IP路由选择主要完成以下这些功能:
1) 搜索路由表,寻找能与目的IP地址完全匹配的表目(网络号和主机号都要匹配)。如果找到,则把报文发送给该表目指定的下一站路由器或直接连接的网络接口(取决于标志字段的值)。
2) 搜索路由表,寻找能与目的网络号相匹配的表目。如果找到,则把报文发送给该表目指定的下一站路由器或直接连接的网络接口(取决于标志字段的值)。
3) 搜索路由表,寻找标为“默认(default)”的表目。如果找到,则把报文发送给该表目指定的下一站路由器。

如果上面这些步骤都没有成功,那么该数据报就不能被传送。如果不能传送的数据报来自本机,那么一般会向生成数据报的应用程序返回一个“主机不可达”或“网络不可达”的错误。

ARP:地址解析协议

简单的说,ARP协议就是将IP地址转换为MAC物理地址;而RARP,就是ARP的逆向,也就是将MAC物理地址转换为IP地址。看起来这两个协议是完全对称的,但发明这两个协议的初衷基本上没有什么关系。ARP协议是为了在链接层中传输的datagram只能识别MAC地址,所以只能将IP地址转换为MAC物理地址再进行传输和定向;RARP协议是为了获取无磁盘操作系统的IP地址而设计的。具有本地磁盘的系统通常是从磁盘中的配置文件中读取IP地址的,但是无盘系统无法这样操作,所以就需要将MAC地址转换成IP地址了。

ARP提供了IP地址与其对应的硬件地址之间动态映射,它的工作方式如下:
1) ARP发送ARP请求的以太网数据帧给以太网上的每个主机。这个过程称作广播,ARP请求数据帧中包含目的主机的IP地址,其意思是“如果你是这个IP地址的拥有者,请回答你的硬件地址。”
2) 目的主机的ARP层收到这份广播报文后,识别出这是发送端在寻问它的IP地址,于是发送一个ARP应答,这个ARP应答包含I P地址及对应的硬件地址。
3) 收到ARP应答后,使ARP进行请求—应答交换的IP数据报现在就可以传送了。
4) 发送IP数据报到目的主机。

点对点链路不使用ARP。当设置这些链路时(一般在引导过程进行),必须告知内核链路每一端的IP地址。

ARP代理,如果ARP请求是从一个网络的主机发往另一个网络上的主机,那么连接这两个网络的路由器就可以回答该请求,这个过程称作委托ARP或ARP代理(Proxy ARP)。这样可以欺骗发起ARP请求的发送端,使它误以为路由器就是目的主机,而事实上目的主机是在路由器的“另一边”。路由器的功能相当于目的主机的代理,把分组从其他主机转发给它。

免费ARP,主机发送ARP查找自己的IP地址。

RARP:逆地址解析协议

RARP协议是许多无盘系统在引导时用来获取IP地址的。一个RARP请求在网络上进行广播,它在分组中标明发送端的硬件地址,以请求相应IP地址的响应。应答通常是单播传送的。
RARP带来的问题包括使用链路层广播,这样就阻止大多数路由器转发RARP请求,只返回很少信息:只是系统的IP地址。
RARP服务器的实现与系统相关。并不是所有的TCP/IP实现都提供RARP服务器。

ICMP:Internet控制报文协议

ICMP报文的类型由报文中的类型字段和代码字段共同决定。
ICMP地址掩码请求与应答,ICMP地址掩码请求用于无盘系统在引导过程中获取自己的子网掩码。系统广播它的ICMP请求报文。报文中的标识符和序列号字段由发送端任意选择设定,这些值在应答中将被返回。最后发送端将应答与请求得到的报文进行匹配。
ICMP时间戳请求与应答,ICMP时间戳请求允许系统向另一个系统查询当前的时间。返回的建议值是自午夜开始计算的毫秒数,协调的统一时间(UTC)。这种ICMP报文的好处是它提供了毫秒级的分辨率,而利用其他方法从别的主机获取的时间只能提供秒级的分辨率。由于返回的时间是从午夜开始计算的,因此调用者必须通过其他方法获知当时的日期,这是它的一个缺陷。请求端填写发起时间戳,然后发送报文。应答系统收到请求报文时填写接收时间戳,在发送应答时填写发送时间戳。但是,实际上,大多数的实现把后面两个字段都设成相同的值(提供三个字段的原因是可以让发送方分别计算发送请求的时间和发送应答的时间)。

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

PING程序

LAN输出,执行Ping程序,当返回ICMP回显应答时,要打印出序列号和TTL,并计算往返时间。回显应答是以发送的次序返回的,没有丢失报文的情况。Ping程序通过在ICMP报文数据中存放发送请求的时间值来计算往返时间。当应答返回时,用当前时间减去存放在ICMP报文中的时间值,即是往返时间。通常,第1个往返时间值要比其他的大。这是由于目的端的硬件地址不在ARP高速缓存中的缘故。因此,在发送第一个回显请求之前要发送一个ARP请求并接收ARP应答,这需要花费几毫秒的时间。

WAN输出,与在LAN中的情况又很大的不同,WAN中会有丢失报文的情况发生,使得回显应答中某些序列号的回显应答丢失。而且往返时间也有了很大的增加。

线路SLIP链接,与LAN输出的情况非常相似,只是由于SLIP为低速传输,往返时间会大大的增加

拨号SLIP链路,与线路SLIP类似,但由于在链路的两端增加了调制解调器。针对线路链路参数进行的简单计算不再准确了。很多因素都有可能影响。调制解调器带来了时延。随着数据的压缩,分组长度可能会减小,但是由于使用了错误控制协议,分组长度又可能会增加。另外,接收端的调制解调器只能在验证了循环检验字符(检验和)后才能释放收到的数据。最后,我们还要处理每一端的计算机异步串行接口,许多操作系统只能在固定的时间间隔内,或者收到若干字符后才去读这些接口。

IP记录路由选项,Ping程序提供的-R选项,可以实现记录路由的功能。它使得ping程序在发送出去的IP数据报中设置IP RR选项。这样,每个处理该数据报的路由器都把它的IP地址放入选项字段中。当数据报到达目的端时,IP地址清单应该复制到ICMP回显应答中,这样返回途中所经过的路由器地址也被加入清单中。当ping程序收到回显应答时,它就打印出这份IP地址清单。清单中最多只能存放9个IP地址。

Traceroute程序

1)Traceroute程序使用ICMP报文和IP首部中的TTL字段(生存周期)。TTL可看成为一个跳站的计数器,所经过的每个路由器都将其值减1。当路由器收到一份IP数据报,如果其TTL字段是0或1,路由器将该数据报丢弃,并给信源机发一份ICMP“超时”信息。
2)Traceroute程序的操作过程:它发送一份TTL字段为1的IP数据报给目的主机。处理这份数据报的第一个路由器将TTL值减1,丢弃该数据报,并发回一份超时ICMP报文。这样就得到了该路径中的第一个路由器的地址。然后Traceroute程序发送一份TTL值为2的数据报,这样我们就可以得到第二个路由器的地址。继续这个过程直至该数据报到达目的主机。Traceroute程序发送一份UDP数据报给目的主机,但它选择一个不可能的值作为UDP端口号(大于30000),使目的主机的任何一个应用程序都不可能使用该端口。因为,当该数据报到达时,将使目的主机的UDP模块产生一份“端口不可达”错误的ICMP报文。这样,Traceroute程序就可以分析接收到的ICMP报文来判断是否到达目的主机。

IP选路

选路的原理,路由表中包含的信息决定了IP层所做的所有决策。以下是IP搜索路由表的几个步骤:
1) 搜索匹配的主机地址;
2) 搜索匹配的网络地址;
3) 搜索默认表项(默认表项一般在路由表中被指定为一个网络表项,其网络号为0)。

匹配主机地址步骤始终发生在匹配网络地址步骤之前。IP层进行的选路实际上是一种选路机制,它搜索路由表并决定向哪个网络接口发送分组。这区别于选路策略,它只是一组决定把哪些路由放入路由表的规则。IP执行选路机制,而路由守护程序则一般提供选路策略。

路由器的五种不同的标志(flag):

U 该路由可以使用。

G 该路由是到一个网关(路由器)。如果没有设置该标志,说明目的地是直接相连的。

H 该路由是到一个主机,也就是说,目的地址是一个完整的主机地址。如果没有设置该标志,说明该路由是到一个网络,而目的地址是一个网络地址:一个网络号,或者网络号与子网号的组合。

D 该路由是由重定向报文创建的。

M 该路由已被重定向报文修改。

ICMP主机和网络不可达差错,当路由器收到一份IP数据报但又不能转发时,就要发送一份ICMP“主机不可达”差错报文。

ICMP重定向差错, ICMP重定向报文的接收者必须查看三个IP地址:
1)导致重定向的IP地址(即ICMP重定向报文的数据位于IP数据报的首部);
2)发送重定向报文的路由器的IP地址(包含重定向信息的I P数据报中的源地址);

3)应该采用的路由器IP地址。

在生成ICMP重定向报文之前这些条件都要满足,条件如下:
1) 出接口必须等于入接口。
2) 用于向外传送数据报的路由不能被ICMP重定向报文创建或修改过,而且不能是路由器的默认路由。
3) 数据报不能用源站选路来转发。
4) 内核必须配置成可以发送重定向报文。

为防止路由器或主机的误操作,以及恶意用户的破坏,导致错误地修改系统路由表,在修改路由表之前要作一些检查,如下:
1) 新的路由器必须直接与网络相连接。
2) 重定向报文必须来自当前到目的地所选择的路由器。
3) 重定向报文不能让主机本身作为路由器。
4) 被修改的路由必须是一个间接路由。

关于重定向最后要指出的是,路由器应该发送的只是对主机的重定向,而不是对网络的重定向。子网的存在使得难于准确指明何时应发送对网络的重定向而不是对主机的重定向。只当路由器发送了错误的类型时,一些主机才把收到的对网络的重定向当作对主机的重定向来处理。

动态路由协议

RIP

1) 初始化:在启动一个路由守护程序时,它先判断启动了哪些接口,并在每个接口上发送一个请求报文,要求其他路由器发送完整路由表。在点对点链路中,该请求是发送给其他终点的。如果网络支持广播的话,这种请求是以广播形式发送的。目的UDP端口号是520。
2) 接收到请求。如果这个请求是刚才提到的特殊请求,那么路由器就将完整的路由表发送给请求者。否则,就处理请求中的每一个表项:如果有连接到指明地址的路由,则将度量设置成我们的值,否则将度量置为16,然后发回响应。
3) 接收到响应。使响应生效,可能会更新路由表。可能会增加新表项,对已有的表项进行修改,或是将已有表项删除。
4) 定期选路更新。每过30秒,所有或部分路由器会将其完整路由表发送给相邻路由器。发送路由表可以是广播形式的,或是发送给点对点链路的其他终点的。
5) 触发更新。每当一条路由的度量发生变化时,就对它进行更新。不需要发送完整路由表,而只需要发送那些发生变化的表项。

RIP所使用的度量是以跳(hop)计算的。所有直接连接接口的跳数为1。

OSPF 开放最短路径优先

OSPF优于RIP的特点:
1) OSPF可以对每个I P服务类型计算各自的路由集。这意味着对于任何目的,可以有多个路由表表项,每个表项对应着一个I P服务类型。
2) 给每个接口指派一个无维数的费用。可以通过吞吐率、往返时间、可靠性或其他性能来进行指派。可以给每个I P服务类型指派一个单独的费用。
3) 当对同一个目的地址存在着多个相同费用的路由时,OSPF在这些路由上平均分配流量。我们称之为流量平衡。
4) OSPF支持子网:子网掩码与每个通告路由相连。这样就允许将一个任何类型的IP地址分割成多个不同大小的子网。到一个主机的路由是通过全1子网掩码进行通告的。默认路由是以I P地址为0.0.0.0、网络掩码为全0进行通告的。
5) 路由器之间的点对点链路不需要每端都有一个IP地址,我们称之为无编号网络。
6) 采用了一种简单鉴别机制。
7) OSPF采用多播,而不是广播形式,以减少不参与OSPF的系统负载。

BGP 边界网关协议

BGP是一种不同自治系统的路由器之间进行通信的外部网关协议,如下:
1) BGP允许使用基于策略的选路。由自治系统管理员制订策略,并通过配置文件将策略指定给BGP。
2) BGP与RIP和OSPF的不同之处在于BGP使用TCP作为其传输层协议。两个运行BGP的系统之间建立一条TCP连接,然后交换整个BGP路由表。从这个时候开始,在路由表发生变化时,再发送更新信号。
3) BGP是一个距离向量协议,但是与(通告到目的地址跳数的)RIP不同的是,BGP列举了到每个目的地址的路由(自治系统到达目的地址的序列号)。这样就排除了一些距离向量协议的问题。采用16 bit数字表示自治系统标识。
4) BGP通过定期发送keep alive报文给其邻站来检测TCP连接对端的链路或主机失败。两个报文之间的时间间隔建议值为30秒。

你要对数据包的路由情况进行跟踪,用什么工具? Tracert.exe

你要捕捉进出你的计算机的数据包,用什么工具? NetworkMonitor

你要捕捉网络上的数据包,并要保存到一个文件中以备以后分析,用什么工具?NetworkMonitor(注意:不能用PerformanceMonitor)

你要查看TCP/IP的统计信息,用什么工具? Netstat.exe
你要查找DHCP工作中的问题,用什么工具? Netstat.exe

你要查看网络上NetBIOS的统计信息,用什么工具? Nbtstat.exe

你要对网络上TCP/IP的统计信息以图表(Chart)的形式进行监视,用什么工具?PerformanceMonitor

你要对网络上TCP/IP的统计信息进行监视,并保存到文件中以备用Spreadsheet软件进行分析,用什么工具?PerformanceMonitor

你要查看打印服务器(LPDServer)上的打印队列,用什么工具? LPQ

你要把NTServer的机器设成打印服务器,应装什么服务? LPD(MicrosoftTCP/IPPrinting)

你要从Unix客户机上往NT打印服务器(LPDServer)上发送打印作业,用什么工具?LPR

你要在NTServer用PerformanceMonitor看TCP/IP的统计情况,应装什么服务?SNMP

你要在UNIX机器上看NT机器上的TCP/IP的统计情况,应装什么服务?SNMP

你的公司已有两个DNSServer,现在要安装第三个。你不希望发生区域传输(ZoneTransfer),如何设置? CachingOnlyDNSServer

你正在设置一个DNSServer,你要通过它访问Internet,如何做?Forwarder

你能用IP地址Ping通一台远程的计算机,但你用Internet域名Ping这台计算机时却不通,为什么?DNS或HOSTS文件的设置问题。

你要实现HostsName的非静态解析,如何设置?–DNS与WINS集成。

你的NT网络上有多个字网,你要让网络上的每一台计算机都能在网上邻居中看到所有其它计算机,如何设置?–使用WINS或LMHOSTS文件。

你要通过LMHOSTS文件实现跨网段的浏览,如何设置LMHOSTS文件?–在每个主浏览器(MasterBrowser)中加入域主浏览器的记录并加上#PRE#DOM:域名,–在域主浏览器(PDC)中加入每个主浏览器的记录并加上#PRE#DOM:域名。

一个WINS的客户机在初始化时会向WINS服务器注册什么服务:Server,Workstation,Messenger。

你的FTP服务器的IP地址为193.1.1.100,计算机名为Ftpserver。你能用FTP“IP地址”连到服务器上,但你不能用FTP“UNC名”连接,为什么?WINS设置问题。

你能用“UNC”路径连接到FTP服务器,但当你用FTP“IP地址”连接时,访问被拒绝,为什么?FTP访问权限问题。

你现在有30个子网,以后还要加25个子网,每个子网有600台机器,什么是可用的子网掩码?255.255.252.0

你的网络ID为217.170.250.0,要实现9个子网,什么是可用的子网掩码?255.255.255.240

你正在组建一个网络,如何计算HOSTSID? 台主机一个,一个路由器接口一个,一个网络接口打印机一个。

【申明,本文转自http://www.tuicool.com/m/articles/i6fiaa

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值