基本网络概念
网络的分层
标准TCP/IP4层体系结构
- 应用程序如Internet Explorer运行在应用层,只与传输层对话。传输层只与应用层和网际层对话。网际层则只与主机网络层和传输层对话,绝不直接与应用层对话。主机网络层通过线缆、光纤或其他媒介将数据移动到远程系统的主机网络层,然后再通过上述各层逐级上移到远程系统的应用层。
- 应用层:Web浏览器向Web服务器发送获取网页的请求
传输层:将请求分解为TCP片,向数据添加序号和校验和
网际层:将片根据本地网络所需的大小分成IP数据报
主机网络层:将数字数据编码为适合特定网络媒体的模拟信号,将请求发送到线缆
远程主机网络层:从线缆上读取请求,将模拟信号解码为数字数据
远程网际层:检查IP数据报是否被破坏,如果被分片则重组数据
远程传输层:检查是否所有的数据都已到达,对于丢失或破坏的部分要求重传。接收到足够的连续顺序数据报,就重组写入一个流
远程应用层:读取流
主机网络层(host-to-work layer)
- 也称数据链路层
- 定义了某个网络接口(如以太网卡或PPP连接)如何通过与本地网络或其他部分的物理连接发送IP数据报
网际层(internet layer)
- 在OSI模型中,称为网络层
- 定义了数据位和字节如何组织为更大的分组,称为包,还定义了不同计算机彼此寻址的模式
- 网际协议(IP)是世界上使用最为广泛的网络层协议
- 包中通过网际层发送的数据称为数据包(datagram)。每个IP数据报包含一个长度为20至60字节的首部,以及一个包含多达65515字节数据的有效载荷(payload)。
传输层(transport layer)
- 负责确保各包以发送时的顺序接收,保证没有数据丢失或破坏
- 为此,IP网络会给每个数据报添加包含有更多信息的附加首部。
- 这一层上,主要有两个协议: 1.传输控制协议(TCP, Transmission Control Protocol),支持对丢失或破坏的数据进行重传,以及按照发送时的顺序进行传送。 2.用户数据报协议(UDP, User Datagram Protocol),它允许接收方检测被破坏的包,但不保证这些包以正确的顺序传送(或可能根本不传送)。 UDP通常比TCP快。TCP称为可靠协议,UDP称为不可靠协议。
应用层(application layer)
- 向用户传送数据的层
- 定义了数据从一台计算机传输到另一台计算机以后的操作
- 协议:HTTP SMTP FTP FSP TFTP等
IP、TCP和UDP
- IP使得任意两点之间有多个路由,可以绕过损坏的路由器实现数据包的路由
- TCP位于IP层上方,能够让连接的两端确认IP包的接收,请求重传丢失或被破坏的包。同时允许接收端的包以发送时的顺序重新组合在一起。
- UDP可以用于数据的顺序不很重要,而且单个包的丢失不会完全破坏数据流的情境下。
- 可以在IP上运行很多其他协议,最常使用的是ICMP,网际控制消息协议(Internet Control Message Protocol),它使用原始IP数据报在主机之间传递错误消息。在此协议上最著名的应用是ping程序。
- Java只支持TCP和UDP。
IP地址和域名
- IPv4采用点分四段(dotted quad)格式,如192.1.32.90。每个数字都是一个无符号字节,范围从0到255.
- IPv6谢伟冒号分隔的8个区块,每个区块是4个十六进制数字,如FEDC:BA98:7654:3210:FEDC:BA98:7654:3210。两个冒号表示多个0区块,但每个地址中至多出现一次。如。FEDC:0000:0000:0000:00DC:0000:7076:0010可以写成FEDC::DC:0:7076:10.
- 在IPv4和IPv6的混合网络中,IPv6的最后4个字节有时写成IPv4的点分四段地址。如,FEDC:BA98:7654:3210:FEDC:BA98:7654:3210可以写成FEDC:BA98:7654:3210:FEDC:BA98:118.84.50.16。
端口(port)
- 每台具有IP地址的计算机都有几千个逻辑端口(确切地讲,每个传输层协议有65535个端口)。
- 1到1023的端口号保留给已知的服务。
Internet
Internet地址分类
- C类:指明地址的前3个字节,如199.1.32。允许有254个单独的地址空间,从199.1.32.1到199.1.32.254.(最后一个字节为0或255的地址为保留地址,不分配给主机)
- B类:只指定前2个字节,如167.1.B类地址有65024个不同的主机空间(256*254)。
- A类:只指定地址范围的第一个字节,因此有超过1600万个节点空间。
- 在A类和B类或B类和C类之间,没有其他大小的块。这样会浪费很多地址。为有效地分配有限的地址空间,人们发明了无类别域间路由(CIDR, Classless Inter-Domain Routing)。CIDR使用基于一定数量的前缀位的寻址模式。前缀写作/nn,/nn指定地址中网络部分位数的两位数,”/”后面的数组表示确定的前缀位数。”/24”确定了地址前24位,留下8位用于区分各个节点,允许有256个节点。实际中,可能遇到的最小网络是”/28”,只留下4位用于区别本地节点。
网络地址转换
- 出于安全性和地址空间保护的原因,许多较小的网络,如家庭网络,使用了网络地址转换(NAT, network address translation)。
- 一个较小的网络可能只有一个外部地址,216.254.8.72.但其中有十几个不同的计算机。可以为及其分配了非路由块192.168.254.xxx中的不同地址。当连接到Internet时,必须通过路由器将内部地址转为外部地址。
防火墙(firewall)
- 位于Internet和本地网络之间检查所有进出的数据以保证其合法性的硬件和软件。
代理服务器(proxy server)
- 被防火墙阻止连接外部网络的机器,可以请求本地代理服务器的Web页面,而不是直接请求远程Web服务器的Web页面。然后代理服务器会请求Web服务器的页面,将响应转发给最初发出请求的机器。使用代理服务器可以使攻击进入内部网络更加困难。
- 防火墙一般工作于传输层或网际层,而代理服务器通常作用在应用层。
- 代理服务器还可以用于本地缓存(local caching)。当请求Web服务器的文件时,代理服务器首先查看文件是否已缓存。如果文件在缓存中,那么代理服务器将提供缓存的文件,而不是Internet上的文件。这个模式可以显著地降低Internet连接的负担,大大提高响应时间。