《用TCP/IP进行网际互联》学习笔记2 - 应用部分
20 客户-服务器交互模式(C/S)
1) 服务器打开熟知端口,等待客户登录。客户则任意分配一个端口号。
2) 服务器持续不断的、并发的等待客户请求并响应。而客户生命周期有限。
21 套接字接口(Socket)
1) 套接字(Socket)API最初作为BSD unix的一部分出现,它是协议与应用软件之间的接口,并非TCP/IP标准协议族的一部分。
2) 关于Socket API,参考:
http://blog.csdn.net/sandyzhs/archive/2009/04/14/4071839.aspx
http://blog.csdn.net/sandyzhs/archive/2009/04/14/4073442.aspx
http://blog.csdn.net/sandyzhs/archive/2009/04/17/4086095.aspx
3) Send/recv与write/read的区别:前者专用于socket,可以设置flag。后者可以使用通用的文件描述符,既能用于socket,还可以用于一般的文件操作。
22 启动引导与自动配置(DHCP)
1) RARP是为了让计算机获取一个IP地址,后来BOOTP取代了RARP,现在使用DHCP(Dynamic Host Configuration Protocol)动态主机配置协议。
2) DHCP使用UDP和IP,遵守C/S模型。C发送一个分组,请求自己的引导信息;S回送包含机器启动信息的分组,包括机器的IP地址、路由器的地址、DNS地址。
3) 原理:一个应用程序在发现本地网络的IP或者机器的IP之前,可以使用全1的IP地址,来发送受限广播,并接收发回的受限广播。DHCP报文格式:
OP(1) | 硬件type(1) | 硬件len(1) | 跳数 (1) |
Transaction ID(4) | |||
Seconds(2) | Flags(2) | ||
客户IP addr(4) | |||
你的IP addr(4) | |||
服务器IP addr(4) | |||
路由器IP addr(4) | |||
客户硬件addr(16) | |||
服务器主机名(64) | |||
启动文件名(128) | |||
Options(variable) |
23 域名系统(DNS)
1) DNS( Domain Name System)域名系统,为因特网提供从名字到地址的映射,或者从地址到名字的映射(用的比较少),它拿用户友好的、分级的域名代替难以记忆的IP地址。而分级的机器名是按照组织结构分配的,而不是物理上的结构。
2) 顶级域名有两种分级方式:地理的和组织的。
3) 名字解析的时候,客户机器必须至少能够与一台名字服务器取得联系,以便解析。
24 远程登录和桌面(TELNET和SSH)
1) TELNET是简单文本远程终端协议,运行用户通过互联网登录到另外一台机器上。
2) TELNET提供三种基本服务:虚拟网络终端(NVT),为远程系统提供标准接口;运行客户和服务器协商选项;对称处理两端。
3) 为了区分普通数据和命令,TELNET使用了紧急数据机制实现带外信令。
4) Telnet连接双方首先进行交互的信息是协商选项。选项协商是对称的,也就是说任何一方都可以主动发送选项协商请求给对方。
5) 安全外壳(Secure Shell,SSH)是一个建议标准,提供了三种机制:a) 一个运输层协议,提供服务器鉴别、数据保密性以及数据完整性。因此,即使第三方得到了分组的数据,也无法解密;b) 一个用户鉴别协议,用于服务器鉴别用户;c) 一条连接协议,可以在一条底层SSH连接上复用多条逻辑通信通道。
6) SSH提供的是一条通用的安全连接以及在一条连接上服用多个服务的设施,远程登录只是一个在SSH上复用的服务之一。
7) SSH复用的最强大的一面称为端口转发,即:允许一个用户的所有应用程序都使用一条SSH连接进行通信。
8) 其他的远程访问技术:VNC和RDP都是远程桌面。
25 文件传送与存取(FTP、TFTP和NFS)
1) 文件传输协议FTP需要解决异构机器之间的存取授权、命名和表示方法等细节,还提供了格式规范(传输的数据格式)和存取授权控制(用户密码)。
2) FTP服务器运行多个客户的并发存取,那么服务器上就需要有至少一主一从两个进程。另外,数据传输和数据控制分别使用不同的TCP连接。数据传输的连接及其容器进程可以在需要是动态创建,但是控制连接必须在整个会话期间存在。一旦控制连接消失,会话也就终止了,C/S两端将终止所有的数据传送。
3) FTP的初始连接的端口号是21(服务器listen),数据连接的端口号是20(客户端listen)。建立连接时,与数据传输时,其客户端与服务器的角色刚好相反。
4) 由于需要考虑防火墙以及NAT系统,所以有了被动FTP(Passive),它允许客户端初始化每条数据传送连接,而不是传统上的服务器来初始化数据连接。
5) 有三种FTP的安全处理:a) 安全套接字FTP(Secure Socket Layer,SSL-FTP),为FTP的所有传送进行加密,它也是应用层程序使用的事实标准。由于基本的SSL遵守socket API,所以使用SSL扩展时只需要对FTP(或者其他的应用程序)的客户端和服务器做很少的修改。 b) 安全文件传送程序(Secure File Transmission Program,sftp),与FTP没有任何的关系。Sftp的文件传送,都是建立在SSH隧道基础之上的,不能单独使用,所以sftp传送要要通过SSH连接进行复用。同时这个SSH连接也向其他的应用程序提供安全性。 c) 安全复制(Secure Copy,scp)使用加密技术进行安全传送,他使用的也是SSH连接。
6) TFTP(Trivial FTP)是另一个文件传输协议,它与FTP不同:不需要可靠的流运输服务;运行在UDP之上,使用超时和重传来保证数据的到达;512字节传送。
7) NFS(Network File System)网络文件系统,是一种分布式文件系统,允许网络中的计算机象本地机一样的使用另一台联网计算机的文件和外设。当一个应用程序执行时,调用操作系统打开文件来进行存取。这个请求会传给本地文件系统或者NFS客户,具体取决于该文件是在本地机还是远程机器上。
8) NFS的包括三个协议:NFS协议本身、远程调用(RPC)机制和外部数据表示(XDR)。
26 电子邮件(SMTP、POP、IMAP、MIME)
1) 电子邮件与其他的大多数网络服务不同,即需要考虑远端目的地暂时无法接通。使用了假脱机(缓冲)技术。
2) 在发送时,使用TCP连接,用域名系统将mail服务器名转换为IP地址。mail地址中的@后面的服务器名称与分配给该机器的其他名字完全无关,随意设定。
3) 电子邮件有两个标准:2822标明报文的语法格式,SMTP和POP指出邮件交换的细节。
4) SMTP定义如何把数据从一台机器传送到另一台机器的服务器上。它规定C/S间的通信有可读的ASCII文本构成,每个命令单独一行。常用的命令:
5) 把邮件从永久信箱传送到本机上的协议叫邮局协议(Post Office Protocol,POP)。
6) MIME(多用途国家邮件扩展)为非ASCII报文定义了数据类型和编码规则。MIME标准规定content-type包含两个标志符: 内容类型和子类型,中间用/隔开,比如image/jpeg。有7种基本类型:text, image, audio, video, application, multipart, message,除此之外用户可以定义自己的内容类型。
27 万维网(HTTP)
1) HTTP(超文本传输协议)特点:应用层,请求/响应,无状态,双向传输,能力协商(字符集,cookie等),缓存,中介(代理)。
2) CGI(Common Gateway Interface),允许服务器上运行的程序动态创建web页面。
3) HTTP借用了mail的基本格式,使用2822格式以及MIME扩展。
4) HTTP的请求方式。GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连;POST把提交的数据则放置在是HTTP包的包体中。POST的安全性要比GET的安全性高。
5) HHTP over SSL简称HTTPS,用于解决web的安全问题。它解决了两个问题:数据加密; SSL使用证书进行鉴别。
28 IP上的语音和视频传输(RTP、RSVP、QoS)
1) 因为IP互联网不是等时系统,所以在发送数字化的实时数据时需要额外的协议支持。检测重复,分组重排,告诉分组何时播放(携带时间戳)。
2) 会话开始时,接收方先要推迟回放,把数据放到回放缓冲区。当缓冲区到达预订的回放点的阈值时,开始播放。当然,缓冲区不能解决数据丢失问题。
3) 在丢失和延迟之间要做过折中:缓冲区过大,延迟就明显,但是丢失会比较少;过小,抖动比较明显,但是实时。
4) 在IP互联网上传输数字音频或者视频的协议称为实时运输协议(Realtime Transport Protocol),他只是增加了时间戳和分组序号,并没有实时交付的保障。
5) RTP运行在UDP之上,主要原因是可以并发。
6) 服务质量(Quality of Service,QoS)指的是网络系统对丢失、延迟、吞吐量和抖动等方面在统计性能上的保证。等时系统在设计时要满足严格的性能条件,所以说它提供了QoS保证。但尽最大努力交付的分组交换网被认为不提供QoS保证。
30 互联网的安全性和防火墙设计(IPsec和SSL)
1) 网络安全有两种基本技术:边界安全和加密。边界安全允许一个组织机构决定对外人提供的服务和网络,以及外人能够使用的资源的范围。
2) 信息安全包括:数据完整性;有效性;保密性;授权;鉴别身份;避免重放。
3) IP安全(IPSec),在IP层提供鉴别和保密服务,即可以和IPv6也可以和IPv4使用。它让系统灵活且有扩展性,没有指定其功能或必须使用的算法,而是一组算法和一个通用的框架结构。
4) IPsec并没有改变数据报或者创建一个IP选项,而是使用了一个单独的鉴别首部来承载鉴别信息:
[IPv4首部][TCP首部][TCP数据] -->[IPv4首部][鉴别首部][TCP首部][TCP数据]
5) 安全套接字SSL,工作流程:当客户使用SSL与服务器联络时,SSL协议允许两端分别向对方鉴别自己;然后两端协商并选择一种双方都支持的加密算法;最后,SSL运行两端都建立一条加密的连接。
6) 互联网防火墙是一种控制互联网访问控制的技术,它把互联网分为外部的和内部的两部分。它的实现是使用分组过滤器,即把(源站IP,目的IP,协议,源端口,目的端口)进行配置,作为防火墙的过滤规则。没有被配置的IP、协议、端口等默认是不允许通过防火墙的,而被配置的数据是可以通过防火墙。
7) 当然,防火墙只控制了连接,但并没有控制流入和流出的数据的内容是否安全。
31 下一代IP(IPv6)
1) IPv6的变化:更大的地址空间;扩展的地址层次;首部格式与v4不兼容,固定大小;增强的选项;协议扩展的支持;支持自动配置和重新编号;自由分配。
2) IPv6基本首部格式,40byte长度:
3) 冒号16进制记法ABCD:0:0:……:6789。重复的0可以省略ABCD::6789,或者::ABCD:1.
4) IPv4的地址可以在IPv6中使用,::IPv4 或者::FFFF:IPv4.
5) 为了发现局域网的机器,在IPv6使用ICMPv6来代替ARP协议。