《TCPIP协议 - 浙江工业大学_12940》由会员分享,可在线阅读,更多相关《TCPIP协议 - 浙江工业大学_12940(101页珍藏版)》请在金锄头文库上搜索。
1、TCP/IPTCP/IP协议协议陈庆章陈庆章20122012年年4 4月月2525日日IPIP地址地址IP地址类别IP地址划分为四类1.0.0.0 to126.255.255.255128.0.0.0 to191.255.255.255192.0.0.0 to223.255.255.255224.0.0.0 to239.255.255.255Range0NetID10110NetID1110Multicast AddressHostIDNetIDHostIDHostIDABCD8 bits8 bits8 bits8 bits最大网络数= 27-2 = 126最大主机数= 224-2 = 167
2、77214最大网络数= 214 = 16384最大主机数= 216-2 = 65534最大网络数= 221 = 2097152最大主机数= 28-2 = 254ClassIP地址范围一览类范范围最高位最高位网网络ID位数位数网网络数数量量主机主机ID位数位数主机数量主机数量A1127081262416777214B1281911016163841665534C1922231102420971528254D2242391110无无E2402551111无无保留IP地址某些地址已经被Internet放置一边,保留用于专用。如果想在自己内部网上走TCP/IP,一般使用保留地址。保留地址段如下:10.
3、0.0.0-10.255.255.255172.16.0.0-172.31.255.255192.168.0.0-192.168.255.255(当内部网要访问Internet时,可以使用NAT技术将保留地址转换到有效IP地址。)子网和其划分一般所说的子网划分,就是在最初的IP地址划分方案基础上,加入一个子网等级层次。这种子网划分方案对单位外部的网络没有影响,也就是说,在这个单位外部的一台主机仍然只看到原来的具有两个等级的地址结构。在单位内部,本地网络管理员可以为子网ID和主机ID自由地选择任意的长度组合。默认子网掩码不划分子网时,各类IP地址默认的子网掩码为:A类:255.0.0.0 111
4、11111000000000000000000000000B类:255.255.0.0 11111111111111110000000000000000C类:255.255.255.0 11111111111111111111111100000000例子:C类地址可子网划分的子网数目与子网掩码最多子网数 占用位数子网掩码子网中主机数22255.255.255.19262363255.255.255.224307144255.255.255.2401415305255.255.255.248631626255.255.255.2522IPIP协议协议概念IP协议将底层的各种不同类型的MAC帧转换
5、为统一的IP数据报(分组),并将MAC帧的物理地址变换为全网统一的逻辑地址(IP地址)。 IP协议:规定了在Internet中进行通信时应遵守的规则。如:IP包的组成、路由器如何将IP包送到目的主机等。IP分组:屏蔽了底层数据帧的不同。将上层的数据封分组:屏蔽了底层数据帧的不同。将上层的数据封装成分组(装成分组(Packet),尽最大努力传输分组。),尽最大努力传输分组。IP 分组verTotal length32 bitsdata (可变长度,一般为一个 TCP 或UDP 数据段)16-bit identifierInternet checksumtime tolive32 bit sour
6、ce IP addressIP 协议版本号首部长度 (bytes)余留步跳(每经过一个路由器都要减1)用于分段/重装分组长度 (bytes)数据对应的上层协议是什么head.lentype ofservice数据“类型” flgsfragment offsetupper layer32 bit destination IP addressOptions (if any)E.g. 时间戳,记录路由标记,定义要访问的路由器校验和完整的分完整的分组格式组格式共计共计2020个字节个字节称为称为IPIP头头IP路由选择为分组选择一条从源主机到目的主机的最佳路径。可选路径不止一条路径可能要跨越多个网络网
7、络中实现路由选择功能的设备是路由器。对每一个接收到的分组,路由器必须确定从哪条路径将其转发出去。 路由器根据其内部保存的一张路由表转发分组。路由表中存放了到达其他网络的路由信息。目的网络地址 下一跳(路由器)地址(Next Hop)其他(各种标志、子网掩码、接口、)路由选择路由表的基本内容202.168.0.0172.16.0.010.0.0.0R1R2R1的路由表.1.1.2.1目的网络目的网络下一跳路由器地址下一跳路由器地址172.16.0.010.0.0.0202.168.0.2202.168.0.0直接(从s0)直接(从s1)default202.168.0.2s0s1IP地址如何分配
8、主机的IP地址有两种分配策略:由网络管理员手工分配(静态分配);动态分配:DHCP协议(Dynamic Host Configuration Protocol)网络中需设置一台DHCP服务器;网络管理员在DHCP服务器中预先定义一个IP地址池地址池。分配过程:需要申请IP地址的主机在网络中广播 “DHCP discover” 报文网络中的DHCP服务器用 “DHCP offer”报文响应主机发送IP地址请求:“DHCP request” 报文DHCP服务器从地址池中取出一个未分配的IP地址发送给请求者:“DHCP ack” 报文 DHCP的状态转换ARPARP协议协议ARP协议ARP将一个已知
9、的IP地址映射到MAC地址。想一想:为何要进行映射?映射方法:已知:IP地址1)检查本地ARP高速缓存表,若找到IP地址对应的表项,则取出表项中的MAC地址;2)若IP地址不包含在表中,就向网上发广播来寻找。具有该IP地址的目的站用其MAC地址作为响应。ARP只能用于具有广播能力的网络。只能用于具有广播能力的网络。AC我需要我需要10.0.0.5的的MAC地址地址IP = 10.0.0.5 IP = 10.0.0.5 MAC = ?MAC = ? 我就是,这是我就是,这是我的我的MAC地址!地址!IP = 10.0.0.5IP = 10.0.0.5MAC = 08-00-00-20-2C-0A
10、MAC = 08-00-00-20-2C-0AB10.0.0.110.0.0.510.0.0.2ARP操作的例子:A想知道10.0.0.5的MAC地址为什么需要ARP协议?n n 在因特网中,数据分组传输使用的是IP地址(逻辑地址);而在局域网中,传输数据时需要使用物理地址(MAC地址)。n 许多因特网的主机位于局域网中,当数据分组到达局域网时,需要把IP地址转换成MAC地址,然后把分组封装在局域网链路层的帧中,才能发送到该主机。ARP与IP的交互例子:由R对A到B的数据包进行路由的过程ARB在LAN1中,所有的主机都具有111.111.111.xxx的IP地址形式。LAN2中的所有主机都具有
11、222.222.222.xxx的IP地址形式。假设主机111.111.111.111要发送一个数据报到主机222.222.222.222。发送主机的链路层协议必需指出该目的主机的MAC地址。那么发送主机会使用哪个MAC地址?是222.222.222.222的MAC地址49-BD-D2-C7-56-2A吗?目的MAC地址为49-BD-D2-C7-56-2A的帧能穿越路由器吗?实际上,发送主机在发送分组之前,就已经知道目的主机不在本地LAN上(只要比较目的主机和发送主机的IP地址中的网络地址部分便可得知),所以必须将分组发送给路由器,由路由器进行转发。路由器的IP地址(Windows中称为缺省网关
12、)在发送主机中已经预先设置(在本例中为111.111.111.110)。现在的问题是:发送主机如何得到路由器接口的MAC地址呢?当然是使用ARP协议!一旦发送主机获得了路由器接口的MAC地址,就可以生成一个数据帧,发送给路由器。LAN1上的路由器接口收到了发给它的数据帧后,将封装在其中的分组提交给网络层。这样,分组就成功地从主机发送到了路由器上!接下来,路由器还必须将分组发送到目的地。路由器首先需要选择适当的接口来转发,这项工作路由器可以通过查询路由表来完成。路由表告诉路由器:“需要通过222.222.222.220接口转发该分组”。于是,路由器把分组送到该接口。最后,接口将分组传送给其适配器
13、,组成新的数据帧新的数据帧,并广播到LAN2中。这时,数据帧的目的MAC地址才是真正的最终目的主机的MAC地址。路由器又是如何知道最终目的主机的MAC地址呢?还是使用ARP协议!路由器通过数据报中的目的IP地址和ARP协议来得到目的主机的MAC地址。ICMPICMP协议协议ICMP协议:Internet Control Message Protocol用于主机、路由器、网关之间交换网络层信息报告错误: unreachable host, network, port, protocol进行request/reply 应答(ping命令)同处于网络层但“凌驾”于IP之上:ICMP报文需要封装到IP
14、分组中进行传输ICMP报文报文: type和code两个字段的含义见右。Type Code description 0 0 echo reply (ping) 3 0 dest. network unreachable 3 1 dest. host unreachable 3 2 dest. protocol unreachable 3 3 dest. port unreachable 3 6 dest. network unknown 3 7 dest. host unknown 4 0 source quench (congestion control - not used) 8 0 ec
15、ho request (ping) 9 0 route advertisement 10 0 router discovery 11 0 TTL expired 12 0 bad IP header最常用的是最常用的是“目的地无法到达目的地无法到达”和和“回声回声”消息。消息。AB广域网广域网发数据给发数据给Z到到Z的数据的数据用用ICMP通知通知A”我不知道如何我不知道如何到达到达Z?”目的端无法到达目的端无法到达路由器路由器R用用ICMP消息通知目的地消息通知目的地“不可达不可达”RABB可以到可以到达吗?达吗?ICMP回声请求回声请求 可以,可以,我在这里。我在这里。ICMP回声应答回声
16、应答用用PING命令产生的回声请求及回声应答命令产生的回声请求及回声应答ping xxx.xxx.xxx.xxxping xxx.xxx.xxx.xxxTCPTCP协议协议因特网传输层协议提供运行在不同主机中进程间的逻辑通信;传输协议仅运行在端系统中;传输 vs. 网络层服务:网络层网络层: : 在网络间进行通信;传输层传输层: : 在进程间进行通信;传输层依赖于网络层的服务,反过来又加强了网络层的服务。applicationtransportnetworkdata linkphysicalapplicationtransportnetworkdata linkphysicalnetworkd
17、ata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicallogical end-end transport传输层协议两类传输服务:可靠的,按序点对点递交: TCP拥塞控制流量控制连接建立不可靠的(“尽力而为”), 无序的点对点或广播递交:UDP不能提供的服务:实时性带宽承诺可靠的广播通信 TCP分组格式source port #dest port #32 bits应用数据 (可变长度)sequence numberacknowl
18、edgement numberrcvr window sizeptr urgent datachecksumFSRPAUheadlennotusedOptions (可变长度)URG: urgent data (一般不用)ACK: ACK# validPSH: push data now(一般不用)RST, SYN, FIN:connection estab(setup, teardowncommands)接收方一次能够接收的字节数按发送数据的字节计算(不是按段数!)Internetchecksum(as in UDP)传输层端口号在TCP和UDP的段头中有两个端口号源端口号(source p
19、ort-number)宿端口号(destination port-number)TCP使用端口号来标识执行发送和接收的应用进程,端口号可以帮助TCP来分离字节流并且把相应字节传递给正确的应用程序。根据IP地址和端口号就可以唯一地确定信宿主机中某个特定进程。端口号可以是半永久的和临时的:服务器端在一个半永久性的端口上来监听客户端的访问请求。客户端使用临时端口在本地标识一个对话。客户端的端口只在使用TCP服务时候才存在,而服务器端口只要服务器进程在运行就一直存在。 端口号是一个16比特的二进制数,其取值范围从065535。网络上的计算机中运行的任何网络应用程序都有一个或多个端口号与之对应。端口号分
20、为三类:从01023的端口号被称为众所周知的端口号众所周知的端口号(well-known numbers)并被限制使用这些端口号已分配给标准的网络应用:如HTTP、FTP、SMTP等。众所周知的端口号的详细说明见 RFC 1700;或访问http:/www.iana.org/assignments/port-numbers。从102449151的端口号称为注册端口号注册端口号,用来标识那些已经向IANA注册的应用。 从4915265535的端口号称为私有端口号私有端口号,是非注册的,并且可以动态地分配给任何应用进程。 常见的“众所周知的(默认)”端口号FTPSMTPTFTPDNSTelnetS
21、NMP2123255369161TCP/UDP应用层应用层传输层传输层20HTTP80网络层网络层IP端口使用举例主机 A服务器 Bsource port: xdest. port: 23source port:23dest. port: x端口的使用端口的使用: 简单的简单的 telnet 应用应用Web客户端主机 AWeb服务器 BWeb客户端主机 CSource IP: CDest. IP: Bsource port: ydest. port: 80Source IP: CDest. IP: Bsource port: xdest. port: 80端口的使用端口的使用: Web 服务器
22、服务器Source IP: ADest IP: Bsource port: xdest. port: 80.主页1主页2UDP:用户数据报协议 RFC 768“最简约的” Internet 传输协议提供“尽力而为的” 服务,UDP数据段允许:丢失应用数据不按序到达无连接:无连接:在UDP收发双方之间无需握手信号;每个UDP数据段的操作都互相独立。为什么需要 UDP?无需建立连接(连接过程会增加延迟)简单:在收发双方之间没有连接状态段首部较短无拥塞控制:UDP 可按需要随时发送UDP:(续) 经常在流媒体中使用对传输速率敏感对传输可靠性不敏感允许数据丢失UDP的其他用途:DNSSNMP若需要通过
23、UDP进行可靠传输,需要在应用层增加可靠性措施在应用程序中程序员必须考虑出错恢复机制!UDP 数据报格式源端口 #宿端口 #32 bits应用层数据 (报文)lengthchecksumUDP段的段的字节数字节数,包括首部包括首部TCP连接的建立:三次握手例如:例如:A A、B B两个主机要建立连接(由两个主机要建立连接(由A A发起)发起)AB方向方向消息消息含义含义ABABABSYNSYNACKACK我的初始序号是我的初始序号是X序号用于跟踪通信顺序,确保多个包传输时无数据丢失。序号用于跟踪通信顺序,确保多个包传输时无数据丢失。通信双方建立连接时必须互相交换各自的初始序号。通信双方建立连接
24、时必须互相交换各自的初始序号。知道了,你的序号是知道了,你的序号是X我的初始序号是我的初始序号是Y知道了,你的序号是知道了,你的序号是Y握手握手123合合并并1.2.3.4.TCP通过三次握手来建立连接AB发送发送SYN消息消息(SEQ=x)收到收到SYN消息消息(SEQ=x)发送发送SYN消息消息(SEQ=y, ACK=x+1)收到收到SYN消息消息(SEQ=y, ACK=x+1)发送确认发送确认(ACK=y+1)收到确认收到确认(ACK=y+1)双方连接建立双方连接建立TCP 流量控制接收端: 显式地向发送端通告自己的接收缓存的大小 (动态变化)RcvWindow (见见TCP段格式)发送
25、端: 需要保存已经发送的,但未被确认的数据。发送端不可发送太多、太快以至于使接收端的缓存出现溢出。流量控制接收端缓存接收端缓存RcvBuffer= 接收端的TCP缓存大小RcvWindow = 缓存中空闲的部分*TCP传输的往返时间(RTT)和超时TCP每发送一个报文段,就重置一次计时器。计时器设置的重传时间已到但还未收到确认,就必须重传这一报文段。TCP采用了一种自适应算法:记录每个报文段发出的时间以及对应的确认报文段收到的时间,二者之差就是报文段的往返时延称为SampleRTT应用层协议应用层协议DNSDNS域名系统(DNS)因特网编址机制:三种形式的地址管理机制域名地址域名地址:层次化的
26、地址,便于人们记忆。IP地址地址:202.117.0.2032位逻辑编码,用来在因特网中定位主机和路由器的接口。 TCP/IP网络上的每台主机都必须有唯一的IP地址。域名地址转换到IP地址由域名服务系统(Domain Name System,DNS)实现,这个转换过程又称为域名解析域名解析(Name Resolution)。MAC地址地址:12-FA-9B-23-DB-1148位物理编码,用来在局域网中识别主机/路由器的接口。 IP地址转换到MAC地址由地址解析协议(ARP)实现。DNS(RFC 1035)也是TCP/IP的应用层协议之一。它利用了UDP传输层协议,端口为53。因特网上计算机的
27、名字IP地址的优点和缺点IP地址更适合计算机处理IP地址包含足够的路由信息。IP地址不适合人们记忆无法通过IP地址猜测主机的用途如一个主机到底是www服务器还是FTP服务器?如何取长补短域名系统域名:层次化的主机名域名系统:任务是将域名解析为对应的IP地址。优点:使用方便,易于记忆。一致性好,不会随IP地址的改变而改变。域名空间(域名树)域名空间分为若干层次:根域(顶级域)和次级域主机域名的构成主机名是由一系列由“.”分开的标签组成:每个标签不能超过63个字符;全部的标签不能超过255个字符;书写顺序是从主机开始直到域名树的根域为止。例如:域名是一个组织在域名空间中的名字:例如,浙江工大的域名
28、为。该组织中已注册的主机都以组织的域名为后缀。 DNS系统的组织结构DNS是一个分布式的数据库DNS使用了分布式的域名数据库,运行域名数据库的计算机称为DNS服务器。DNS服务器以层次型结构(和域名树相对应)分布在世界各地,每台DNS服务器只存储了一小部分DNS数据。每一个拥有域名的组织都必须要有DNS服务器,以提供自己域内的域名到IP地址的映射服务。例如,浙江工大的DNS服务器为172.14.8.9,它负责进行域内的域名和IP之间的转换。通常每个域都有一台主DNS服务器,然后有一台或数台备份DNS服务器。浙江工大的备份DNS服务器为172.16.7.10。DNS服务器分为三类本地域名服务器本
29、地域名服务器(Local Name Server)即每个组织/企业的DNS服务器。根域名服务器根域名服务器(Root Name Server)为下级域名服务器提供域名解析服务;它需要知道全部根域名服务器(和部分二级域名服务器)的地址。数量很少,由于历史原因,主要分布在北美地区。认证域名服务器认证域名服务器(Authoritative Name Server)每台因特网中的主机都应该在所在域的域名服务器中注册,提供注册的域名服务器就是该主机的认证域名服务器。一般来说,认证域名服务器就是主机所在单位的DNS服务器。DNS服务器DNS服务器的功能能够直接处理域内的域名解析请求。能够向其他DNS服务器
30、发出查询请求来处理对其他域的域名解析请求。能够缓存对其他域的域名解析请求的结果。DNS服务器的操作如果本地域名服务器不能解析域名,它就向根域名服务器询问;根域名服务器将告诉它与哪一个域名服务器联系;DNS再向该域名服务器进行查询;一个DNS请求可能要经过多个往返。域名解析的例子域名解析的例子某个用户要浏览浙江工大的主页,用户主机(假定为A)必须获得主机(以下简称为zjut)的IP地址。解析过程:解析过程:A向本地域名服务器DNS1查询请求;如果DNS1上有zjut的记录,就立即将JD的IP地址返回给A;如果DNS1上没有zjut的记录,DNS1就会向根域名服务器发出查询请求;根域名服务器把负责
31、cn域的域名服务器B的IP地址告诉给DNS1;DNS1向B查询,获得负责域DNS服务器C的地址;DNS1向C查询,获得负责域DNS服务器D的地址;DNS1向D查询,即可获得的IP地址。(注:在命令行下可用(注:在命令行下可用nslookup命令进行命令进行DNS查询)查询)域名数据库中的记录类型A记录记录(Address记录)记录) A 记录是用来指定域名对应的IP地址。最常用NS记录记录(Name Server记录)记录)域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析。 别名记录(别名记录(CNAME记录记录)这种记录用于将多个名字映射到同一台计算机。 通常用于同时提供WWW、F
32、TP和MAIL服务的计算机。 例例 MX记录记录(Mail Exchanger记录)记录)邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据收信人的地址后缀来定位邮件服务器。 例例 PTR记录记录域名指针记录,用于反向 DNS查找。例如,要查找202.117.0.20的域名时就需要借助于PTR记录。SOA记录记录用于说明一个用于说明一个DNS系统的基本信息系统的基本信息例如,一台名为“”(A记录)的计算机, 它同时提供WWW和MAIL服务,为了便于用户访问服务,可以为该计算机设置两个别名(CNAME):WWW和MAIL。 这两个别名的全称就是“”和“”,实际上它们都指向“”。例如
33、,当Internet上的某用户要发一封信给 时,该用户的邮件系统通过DNS查找这个域名的MX记录,如果DNS系统查找到该MX记录, 用户计算机就将邮件发送到MX记录所指定的邮件服务器上。DNSDNS数据库中的资源纪录(数据库中的资源纪录(RRsRRs)DNS与ARP的比较地址类型DNS:域名(应用层地址)IP地址(网络层地址)ARP: IP地址(网络层地址) MAC地址(数据链路层地址) 作用范围DNS:全局(整个因特网)ARP:本地(仅限于LAN内部)工作方式DNS:本质上是对一个分布式数据库的查询过程ARP:LAN内部的广播查询应用层协议应用层协议TelnetTelnet什么是Telne
34、t?Telnet是Telecommunication Network Protocol的英文缩写。用户在本地发出命令,通过IP网络,进入另一台机器的系统,这个过程即称为远程登录。用户通过本地计算机登录到其他计算机上,本地计算机就成为了那台计算机的“终端”,与那台机器本身的终端享有同样的待遇,在它的权限范围内操作那台计算机。大多数提供远程登录的目标系统以UNIX为主。注意:远程登录中的“远”字并非指距离,而是指不是从本地登录到这台计算机。远程终端协议 TELNETTELNET 是一个简单的远程终端协议,也是因特网的正式标准。用户用 TELNET 就可在其所在地通过 TCP 连接注册(即登录)到远
35、地的另一个主机上(使用主机名或 IP 地址)。TELNET 能将用户的击键传到远地主机,同时也能将远地主机的输出通过 TCP 连接返回到用户屏幕。这种服务是透明的,因为用户感觉到好像键盘和显示器是直接连在远地主机上。 客户服务器方式现在由于 PC 机的功能越来越强,用户已较少使用 TELNET 了。TELNET 也使用客户服务器方式。在本地系统运行 TELNET 客户进程,而在远地主机则运行 TELNET 服务器进程。和 FTP 的情况相似,服务器中的主进程等待新的请求,并产生从属进程来处理每一个连接。 网络虚拟终端 NVT 格式 Telnet Server Username:Password
36、: Internet中国浙江工业大学美国加州大学网络虚拟终端 NVT 格式 客户软件把用户的击键和命令转换成 NVT 格式,并送交服务器。服务器软件把收到的数据和命令,从 NVT 格式转换成远地系统所需的格式。向用户返回数据时,服务器把远地系统的格式转换为 NVT 格式,本地客户再从 NVT 格式转换到本地系统所需的格式。 TELNET 定义的一些控制命令 (1) DO (选项代码) 表示要求对方执行该选项 WILL (选项代码) 同意执行此选项(2) DO (选项代码) 表示要求对方执行该选项 WONT (选项代码) 不同意,状态不变(3) WILL (选项代码) 表示我想执行该选项 DO
37、(选项代码) 同意执行此选项(4) WILL (选项代码) 表示我想执行该选项 DONT (选项代码) 不同意,状态不变 WONT (选项代码) 证实状态不变如何使用Telnet启动启动telnet客户端程序客户端程序telnet remote-system port-number其中其中telnet: 命令名命令名。注意也有别的名称,如注意也有别的名称,如NVT220NVT220等。等。remote-system:目标:目标主机名主机名( (域名域名) )或或目标主机的目标主机的IPIP地址地址。port-number: 端口号端口号。它它用于标识用于标识服务器上的服务器上的telnette
38、lnet服务服务 程序进程程序进程。telnettelnet的的默认端口号是默认端口号是2323。telnet的的内部命令内部命令行提示符为行提示符为: telnettelnet启动客户程序例(UNIX/Win DOS)启动时直接指明要连接的目标主机 $ $telnet 指明目标指明目标主机名主机名 $ $telnet 202.117.35.70 指明目标指明目标主机主机IPIP地址地址启动时不指明目标主机 $ $telnet这时将进入telnet内部命令状态telnet 内部命令提示符内部命令提示符在内部命令状态下键入open命令连接远程主机 telnetopen towel.blinke
39、nlights.nl(星球大战星球大战) telnetopen (北邮论坛)(北邮论坛) 连接时远程主机将要求用户输入连接时远程主机将要求用户输入用户名用户名和和口令口令 login: password: 如果通过了用户认证,用户就可以像在远程主机的终端上一样操作远程主机了。在远程主机(服务器)提示符下,用户可以在本地计算机上输入远程系统命令,如email、lynx、pico、ls、pwd等。断开与远程主机的连接断开与远程主机的连接在远程系统提示符下键入命令:exitexit,logoutlogout或Ctrl-DCtrl-D一些可以访问的网站Bulletin Board NameTelnet
40、 Address LocationBBS SoftwareTypeNodesPayDragons Keep Kapolei, HI USAWorldgroupGeneral64OptMinions of Death BBS Jonesboro, AR USASynchronetGeneral10NoNetwork 23 network23.ch Basel, SwitzerlandSynchronetGeneral50NoPhysics BBS phybbs.dyndns.org Las Vegas, NV USARenegadeGeneral6NoStages BBS Valley S
41、tream, NY USAWorldgroupGeneral10OptTheBBS weirdo.dyndns.org Atlanta, GA USACustom/UnixGeneral-No应用层协议应用层协议SMTPSMTP电子邮件(电子邮件(E-mail)电子邮件是因特网上最典型的服务之一:电子邮件是因特网上最典型的服务之一:电子邮件系统的组成电子邮件系统的组成用户代理用户代理(User Agent)功能:编辑、发送、接收、阅读和管理电子邮件。常见的用户代理有:Outlook、Outlook Express、Foxmail等。邮件服务器邮件服务器(E-mail Server)功能:类似“
42、邮局”,接收和转发电子邮件,向发信人报告邮件发送状态按照客户服务器方式工作既是客户,又是服务器电子邮件协议电子邮件协议发送/转发邮件:SMTP(Simple Mail Transfer Protocol)RFC 821、822MIME(Multipurpose Internet Mail Extension)RFC 1521读取邮件:POP3(Post Office Protocol)RFC 1939IMAP4(Internet Message Access Protocol)RFC 2060n点击观看点击观看电子邮件发送和接收过程TCP连接连接TCP连接连接TCP连接连接TCP连接连接l 发
43、信人发信人运行用户运行用户代理编辑代理编辑邮件。邮件。发件人的邮件服务器收件人的邮件服务器l 发送端邮件服发送端邮件服务器收到邮件后,务器收到邮件后,将邮件放入邮件缓将邮件放入邮件缓存队列,等待发送。存队列,等待发送。l 发送端邮件服务器中发送端邮件服务器中的的SMTP客户进程发现客户进程发现邮件队列中有待发送的邮件队列中有待发送的邮件,就与接收端邮件邮件,就与接收端邮件服务器建立服务器建立TCP连接。连接。l 发送端的发送端的SMTP客户客户进程使用进程使用SMTP协议把协议把邮件队列中的邮件发送邮件队列中的邮件发送给接收端的给接收端的SMTP服务服务进程。进程。l 发送完后,关闭发送完后,
44、关闭TCP连接。连接。l 接收端邮件服接收端邮件服务器将收到的邮务器将收到的邮件放入收件人的件放入收件人的邮箱中。邮箱中。l 收件人收信时,运收件人收信时,运行用户代理,用户代行用户代理,用户代理使用理使用POP3协议将协议将用户邮箱中的邮件下用户邮箱中的邮件下载到本地计算机。载到本地计算机。l 用户代理利用户代理利用用SMTP协议协议将邮件传送给将邮件传送给发件人的邮件发件人的邮件服务器。服务器。电子邮件地址电子邮件地址电子邮件用户必须有一个电子邮件地址许多网站提供免费电子邮件服务,需要的话可到这些网站上申请一个邮箱(电子邮件地址)。电子邮件地址由两部分组成:用户名邮箱所在的邮件服务器的主机
45、域名用户名和邮件服务器域名之间用“”隔开 用户名用户名邮件服务器域名邮件服务器域名例如:SMTP是因特网上通用的电子邮件传输协议。它的特点是简单明了,容易实现。SMTP定义了邮件格式及如何通过通过TCP连接连接传输邮件。SMTP使用25号端口在两个邮件服务器之间建立TCP连接。SMTP协议由两个文档进行描述:RFC821:描述了邮件服务器之间如何转发邮件;RFC822:定义邮件信息的格式。SMTP规定邮件的全部内容(包括附件)无论是什么类型的数据都必须转换成7位ASCII码进行传输。简单邮件传输协议SMTP邮件格式RFC822标准的电子邮件信息由两部分组成:邮件头(header):相当于“信封
46、”,主要包括收件人地址投递日期邮件主题发件人地址邮件体(body):邮件正文,相当于装在信封内的信。邮件格式的例子 Received: from (unknown 216.136.131.41)by 192.168.30.102 (Coremail) with SMTP id XQEAACPEeD3FAIMp.1for ; Fri, 06 Sep 2004 23:05:16 +0800 (CST)Message-ID: Received: from 67.242.159.232 by via HTTP; Fri, 06 Sep 2004 08:11:04 PDTDate: Fri, 6 S
47、ep 2004 08:11:04 -0700 (PDT)From: Joy Li Subject: ThanksTo: ChenWenge Cc: In-Reply-To: MIME-Version: 1.0Content-Type: text/plain; charset=us-ascii陈老师:陈老师:我的第一次作业在附件中,请批阅。我的第一次作业在附件中,请批阅。李思李思 012345678 文学文学21班班n邮件头信息都由一些关键词引导。邮件正文则没有任何关键词引导,正文是用户编辑邮件时输入的。n邮件头中的一些主要关键词的含义是:Received:接收邮件的路径、日期、时间以及邮件代理
48、程序的版本号。接收邮件的路径、日期、时间以及邮件代理程序的版本号。 From:表示邮件发送者,包括邮件地址和发送方的表示邮件发送者,包括邮件地址和发送方的“真实姓名真实姓名”。 Date:发信时间。发信时间。Message-ID:由传输代理分配给该邮件的唯一标识。由传输代理分配给该邮件的唯一标识。 To:收件人的电子邮件地址。收件人的电子邮件地址。 Subject:邮件主题,是发件人写的,告诉收件人该邮件的目的。邮件主题,是发件人写的,告诉收件人该邮件的目的。Content-type:邮件正文的类型,是文本还是邮件正文的类型,是文本还是MIME格式。格式。 Cc:表示抄送,它是表示抄送,它是“
49、Carbon copy”的缩写,意为的缩写,意为“复写副复写副本本”, 它用来指定那些将收到该邮件副本的人的邮件地址。它用来指定那些将收到该邮件副本的人的邮件地址。SMTP通信支持SMTP协议的邮件服务器之间采用客户/服务器方式工作,连接发起方称为客户,接收方称为服务器。一旦连接建立,邮件服务器之间通过SMTP协议进行对话,完成邮件的转发功能。SMTP定义了几个非常简单的命令用来进行邮件的发送,其中包括:HELOMAIL FROMRCPT TODATAQUIT下面是一个用下面是一个用Telnet进行进行SMTP协议对话的例子:协议对话的例子: $ Telnet 25 Trying 202.1
50、17.1.21. Connected to . Escape character is . 220 ESMTP ready 202.117.35.70/unknown HELO 250 MAIL FROM: 250 OK RCPT TO: 250 OK DATA 354 go ahead This is a test message. Be sure is send by Telnet. . 250 OK:has queued QUIT 221 close connection Connection closed by foreign host. TCP连接连接SMTP握手握手邮邮件件传传送送
51、断开断开连接连接/连接到email服务器的25端口SMTP的特点电子邮件无论内容多少(包括附件),均使用一个报文(Message)发送。所有的邮件内容,必须使用ASCII代码传送。所有的二进制文件内容必须使用MIME格式转换成ASCII代码(膨化处理)。邮件读取协议常用的有:POP3和IMAPPOP3(邮局协议)基于TCP协议客户/服务器方式客户端程序(Outlook Express、Foxmail等)服务器程序(Exchange等)客户与服务器建立TCP连接后才能读取邮件功能:为用户提供邮箱保存收到的邮件把邮件传输给用户(邮件在客户端脱机处理)邮件传输给用户后,POP服务器一般不再保留IMA
52、P(因特网报文存取协议)基于TCP协议(同POP3)客户/服务器方式(同POP3)功能为用户提供邮箱保存收到的邮件用户可直接操纵IMAP服务器上自己的邮件文件夹新建分类文件夹,移动邮件,删除邮件,查找邮件等仅需要打开邮件时,邮件才传输到客户端邮件将一直保存在IMAP服务器上,除非用户明确地发出删除命令典型例子:Web Mail常用客户端软件OutlookFoxmail应用层协议应用层协议FTPFTP文件传输(文件传输(FTP)FTP是什么?FTP是File Transfer Protocol的英文缩写,即“文件传输协议”。用于在计算机之间传送文件把文件从本地主机传送到远程主机称为“上载上载”U
53、pload,Put把文件从远程主机传送到本地主机称为“下载下载”Download,GetFTP可以传输各种类型的文件:文本文件(ASCII)、二进制文件(Binary);压缩文件、非压缩文件。登录FTP服务器的用户需要注册注册才能登录,但有的FTP服务器也允许匿名(Anonymous)登录。Software、 ProgramDocumentsVideo,Audioftp Username: anonymousPassword: 匿名登录FTPAnonymous FTP SFTP工作原理FTP基于TCP协议,使用TCP协议实现文件的传输。FTP以客户/服务器方式工作:FTP客户程序,如Cutef
54、tp等,运行在用户计算机上用户通过它发出传输文件的请求FTP服务程序,如Serv-U等,运行在服务器上接收并响应客户程序的请求,把指定的文件发送到客户端在进行文件传输时, FTP的客户和服务器之间要建立两个TCP连接:控制连接控制连接(Control Connection):客户程序与FTP服务器的端口21建立控制连接,并在整个FTP会话过程中维持连接;控制连接用于传输请求和应答信息;由FTP客户端发起控制连接。数据连接数据连接(Data Connection):数据连接用于传输文件;每传输一个文件都要建立一个数据连接(在FTP服务器的端口20);由FTP服务器发起数据连接。TCP数据传送数据
55、传送控制控制FTP客户端客户端TCP数据传送数据传送控制控制FTP服务器端服务器端X21因特因特网网20Y由客户端发起由服务器端发起FTP的文件传输过程建立控制连接(客户端发起)(1) 客户端发送一个TCP SYN(TCP同步)包给服务器端,目的端口为21,源端口为一个临时端口; (2)服务器端发送SYN ACK(同步确认)包给客户端,源端口为21,目的端口为客户端上使用的临时端口;(3)客户端发送一个ACK(确认)包。控制连接建立后,客户端使用这个连接来发送FTP命令,服务器端使用这个连接来发送FTP应答。 建立数据连接当用户发出一个文件传输请求时,客户端软件通过控制连接向服务器发出一个PO
56、RT命令,在PORT命令中指定一个临时端口,目的是希望服务器在建立数据连接时使用这个临时端口; (1)服务器端发送一个SYN包给客户端,源端口为20,目的端口为客户端在PORT命令中指定的临时端口;(2)客户端发送一个SYN ACK包,源端口为临时端口,目的端口为20 ;(3)服务器端发送一个ACK包。文件传输 数据连接建立后,发送数据的一方使用这个连接把文件传送给对方。 断开数据连接当数据传输完成后:(1)发送数据的主机发出一个FIN命令来结束数据连接;(2)接收方以ACK确认;(3)接收方紧接着也发送一个FIN命令;(4)发送数据的主机以ACK确认。 断开控制连接FTP会话结束后:(1)客
57、户端以FIN命令来关闭控制连接(2)服务器端以ACK确认;(3)服务器端发送一个FIN;(4)客户端以ACK确认。 ftp Client ftp Server TCP:21 控制连接初始化, 控制端口 SYNPort xxxx - Port 21 SYN, ACKPort xxxx Port 21控制操作: 用户列目录或传输文件 Port, IP, Port yyyy Port xxxx - Port 21 Port Successful Port xxxx Port 21TCP:20 数据连接初始化, 数据端口 SYNPort yyyy Port 20 ACKPort yyyy - Port
58、 20数据操作: 数据传输 DataPort yyyy Port 20 FTP的基本命令启动启动FTPFTP host例如例如: % %ftp (或或ftpopen ) username:cw024001001 实名登录实名登录 password:* 或或: username:anonymous 匿名登录匿名登录 password:(1 1)帮助命令组)帮助命令组列出所有的列出所有的ftpftp命令命令ftpftp?ftpftphelp列出某个列出某个ftpftp命令的使用说明命令的使用说明例如:列出open命令的使用说明ftpftphelp open(2 2)连接命令组)连接命令组ftpf
59、tpopen host 连接远程主机连接远程主机ftpftpclose 结束当前连接,不退出结束当前连接,不退出ftpftpftpftpdisconnect 结束当前连接,不退出结束当前连接,不退出ftpftpftpftpbye 终止所有连接,退出终止所有连接,退出ftpftpftpftpquit 终止所有连接,退出终止所有连接,退出ftp ftp (3 3)目录操作与列表命令组)目录操作与列表命令组ftppwd 列出当前目录名列出当前目录名ftpcd 进入下一级目录进入下一级目录ftpcdup 退回上一级目录退回上一级目录ftpls remote-dir local-file 将远程目录中文
60、件列表将远程目录中文件列表存入本地文件中存入本地文件中 ftpmls remote-file local-file 将远程目录中指定将远程目录中指定类型的文件列表存入本地文件中类型的文件列表存入本地文件中例如,要例如,要将后缀将后缀为为txt的文件的文件列表列表存存入入dirfile.list文件文件: ftpmls * *.txt dirfile.listftpnlist -排序方法排序方法 remote-dir local-file 将远程目录中的文件列表按时间(将远程目录中的文件列表按时间(rt)或或字符字符顺顺序(序(rc)存入本地文件。存入本地文件。例例如如:ftpnlist -rt
61、 /disk1/test test.list (4 4)文件传输命令组)文件传输命令组上传文件上传文件ftpftpput local-file remote-file 若不指定若不指定远程远程文件名文件名,则,则远程远程文件名同本地文件名同本地文件名文件名ftpftpsend local-file remote-file ftpftpappend local-file remote-file ftpftpmput local-file 一次上传多个文件一次上传多个文件下载文件下载文件ftpftpget local-file remote-file若不指定本地文件名若不指定本地文件名,则,则本地
62、本地文件名同文件名同远程文件名远程文件名ftpftprecv local-file remote-fileftpftpreget local-file remote-file 从从远程远程重新下载重新下载文件,参数同文件,参数同getgetftpftpmget remote-file 一次下载多个文件一次下载多个文件文件传输功能图文件传输功能图FTP ClientFTP Serverput mputget mgetrecv regetsend append(5 5)文件类型操作命令组)文件类型操作命令组ftpftpascii 设置设置传输文件的类型为文本传输文件的类型为文本ftpftpbina
63、ry 设置设置传输文件的类型为二进制传输文件的类型为二进制(6 6)文件属性操作命令组)文件属性操作命令组ftpftpchmod mode remote-file 设置文件权限,权限由设置文件权限,权限由modemode规定规定例如:例如:ftpftpchmod 666 aachmod 666 aa 使使同组同组用户和用户和其他用户都有读写权其他用户都有读写权(7 7)查看文件内容命令)查看文件内容命令ftpftpget filename -只只显示显示远程远程文件文件filenamefilename的的内容,内容,- -代表本地代表本地(8 8)其他)其他rename、delete,mdel
64、ete,size,FTPFTP使用举例使用举例下例左边编号下例左边编号0115 是后加的。用户的输入部分用是后加的。用户的输入部分用带下划线的蓝色斜体字带下划线的蓝色斜体字表示。表示。01 ftp 02 Connected to .03 220 FTP server (Version wu-2.5.0(1) Tue Jul 13 10:20:43 CDT.04 Name (:teng): anonymous05 331 Guest login ok, send your complete e-mail address as password.06 Password: 07 230 Guest
65、 login ok, access restrictions apply.08 ftpcd /pub/rfc09 250 CWD command successful.10 ftpget rfc959.txt ftpinfo11 200 PORT command successful.12 150 Opening ASCII mode data connection for rfc959.txt (147316 bytes).13 226 Transfer complete. local: ftpinfo remote: rfc959.txt 151249 bytes received in
66、2.1 seconds (71.27 Kbytes/s)14 ftpquit15 221-You have transferred 151249 bytes in 1 files. 221-Total traffic for this session was 152964 bytes in 1 transfers. 221-Thank you for using the FTP service on . 221 Goodbye.例子中各行信息的解释如下:例子中各行信息的解释如下:01 用户输入用户输入FTP命令启动本地命令启动本地FTP客户程序和远地主机浙江工大匿名客户程序和远地主机浙江工大匿
67、名FTP服务器服务器()建立连接。)建立连接。02 本地本地FTP客户程序显示的连接成功的信息。客户程序显示的连接成功的信息。03 远地服务器返回的信息,远地服务器返回的信息,“220”表示表示“服务就绪服务就绪”。04 本地本地FTP提示用户输入用户名。输入提示用户输入用户名。输入“anonymous”表示请求匿名表示请求匿名FTP服务。服务。05 远地服务器提示远地服务器提示“用户名正确用户名正确”,需要口令。,需要口令。06 本地本地FTP提示用户输入口令。用户可以输入自己的邮件地址,例如提示用户输入口令。用户可以输入自己的邮件地址,例如“”。07 服务器返回服务器返回“230”提示信息
68、,表示用户注册成功提示信息,表示用户注册成功。08“ftp”是是FTP的命令提示符。用户可以输入相应的命令,如的命令提示符。用户可以输入相应的命令,如“help”,“dir”等。这等。这里是改变目录里是改变目录“cd”到到RFC文件所在的目录。文件所在的目录。09 远地服务器返回信息,远地服务器返回信息,表示改变目录命令已经成功。表示改变目录命令已经成功。“CWD”代表代表“Change Working Directory”。10 用户要求获得名为用户要求获得名为“rfc959.txt”的文件,并改名为的文件,并改名为“ftpinfo”。11 远地服务器提示远地服务器提示“PORT”信息,表示
69、要建立数据连接。信息,表示要建立数据连接。“200”表示命令正确表示命令正确。12 数字数字“150”表示表示“文件状态正确文件状态正确,正在建立数据连接,并进行文件传输,正在建立数据连接,并进行文件传输”。13 数字数字“226”表示表示“数据传输完毕数据传输完毕,释放数据连接,释放数据连接”。14 用户输入退出命令。用户输入退出命令。15 远地服务器表示远地服务器表示FTP工作结束。工作结束。常用FTP客户程序图形界面下的图形界面下的FTPFTP程序简化了操作,只要用鼠标点击即可,程序简化了操作,只要用鼠标点击即可,但执行流程与上述介绍类似。但执行流程与上述介绍类似。WindowsWind
70、ows环境下的环境下的FTPFTP传输软件传输软件包括:包括:WS_FTP、CuteFTP、LeapFTP、LeechFTP、 不论在什么界面下进行不论在什么界面下进行FTP操作,以下操作,以下要素都是必须的:要素都是必须的: 主机地址:主机地址:IPIP地址或主机名(域名)地址或主机名(域名) 登录方式:实名或匿名登录方式:实名或匿名 用户标识:用户名或用户标识:用户名或anonymousanonymous 用户口令:用户口令:xxxxxx xxxxxx 或或 abcxxx.yyy.zzzabcxxx.yyy.zzz 本地工作目录本地工作目录 远程工作目录远程工作目录图形界面下的FTP(cuteftp)4.4 文件传输协议(FTP)一些FTP网站 微软FTP网站小小 结结 ARP协议ICMP协议TCP协议UDP协议域名及其解析(DNS)Telnet、Email、FTP协议