一、什么是TCP/IP
网络和协议
1. TCP/IP是一类协议系统,它是一套支持网络通信的协议集合。网络是计算机或类似计算机的设备之间通过常用的传输介质进行通信的集合。
2. 网络协议就是一套通用规则,用来帮助定义复杂数据传输的过程。数据传输从一台计算机上的应用程序开始,通过计算机网络硬件,经过传输介质到正确目的地,然后上传到目的地计算机网络硬件,最后到达负责接收的应用程序。
3. TCP/IP协议定义了网络通信过程,更重要的是,定义了数据单元的格式和内容,以便接收计算机能够正确解释接收到的消息。TCP/IP被称为协议簇。
4. TCP/IP标准定义了TCP/IP网络的通信规则;TCP/IP实现是一个软件组件,计算机通过它参与到TCP/IP网络中。
TCP/IP的特性
1. 逻辑编址:TCP/IP通过逻辑编址提供了子网化的能力。逻辑地址是一个同过网络软件来配置的地址。在TCP/IP中,计算机的逻辑地址称为IP地址。
2. 路由选择:路由器是一种特殊的设备,能够读取逻辑地址信息,并将数据通过网络直接传送到它的目的地。在局域网中,数据传输到另一台计算机或设备时,不用经过路由器,因此不会给大型网络的传输线路带来负担。如果数据要传送到子网以外的计算机上,路由器将负责转发数据。
3. 名称解析:域名到IP地址的映射称为名称解析。域名服务器的专用计算机中存储了用于显示域名和IP地址转换方式的表。
4. 错误控制和流量控制:TCP/IP协议簇提供了确保数据在网络中可靠传送的特性。这些特性包括检查数据的传输错误(确保到达的数据与发送的数据一致)和确认成功接收到网络信息。
5. 应用支持:同一台计算机可以运行多种网络应用程序。协议软件必须提供某些方法来判断接收到的数据包属于哪个应用程序。在TCP/IP中,这个通过系统的逻辑通道实现从网络到应用程序的接口被称为端口。
二、TCP/IP的工作方式
TCP/IP协议系统
1. TCP/IP协议系统必须要完成的任务:
2. TCP/IP模型的协议层:应用层-传输层-网际层-网络访问层(数据链路层-物理层)
3. 网络访问层:提供了与物理网络连接的接口。针对传输介质设置数据的格式,根据硬件的物理地址实现数据的寻址,对数据在物理网络中的传递提供错误控制。
4. 网际层:提供独立于硬件的逻辑寻址,从而让数据能够在具有不同物理结构的子网之间传递。提供路由功能来降低流量,支持网间的数据传递。实现物理地址与逻辑地址的转换。
5. 传输层:为网络提供了流量控制、错误控制和确认服务。充当网络应用程序的接口。
6. 应用层:为网络排错、文件传输、远程控制和internet操作提供了应用程序。
TCP/IP和OSI模型
1. 开放系统互连模型——OSI
2.
数据包
1. 在数据发送的过程中,其流程是从堆栈的上到下,每一层都把相关的信息(成为“报头”)捆绑到实际的数据上。包含报头信息和数据的数据包就作为下一层的数据,再次被添加报头信息和重新打包。
2.
3. 每一层封装报头的原因:接收设备上的每个协议层需要不同的信息来处理收到的数据,所以发送设备上的没一些就封装相应的报头信息。
三、网络访问层
协议和硬件
1. 网络访问层管理为物理网络准备数据所必须的服务与功能:与计算机网络适配器的连接;根据合适的访问方式调整数据传输;把数据转化为电子流或模拟脉冲的形式,以在传输介质上进行传输;对接收到的数据进行错误检查;给发送的数据添加错误检查信息,从而让接收端计算机能够对数据进行错误检查。
2. 网络访问层定义了与网络硬件交互和访问传输介质的过程。
网络访问层与OSI模型
1. 网络访问层大致对应OSI模型的物理层和数据链路层。
2. 物理层负责把数据帧转化为适合于传输介质的比特流。在接收端,物理层把这些脉冲重新组合为数据帧。
3. 数据链路层执行两个独立的任务:介质访问控制(MAC)——这个子层提供与网络适配器连接的接口。实际上,网络适配器驱动程序通常被称为MAC驱动;逻辑链路控制(LLC)——这个子层对经过子网传递的帧进行错误检查,并且管理子网上通信设备之间的链路。
网络体系
1. 网络体系具有一系列的规范来管理介质访问、物理寻址、计算机与传输介质的交互。在决定网络体系时,实际上是在决定如何设计网络访问层。
2. 网络体系包含对物理网络的定义,以及该物理网络上定义的通信规范。
3. 网络访问层的软件必须伴随于特定的硬件设计。TCP/IP协议栈的设计保证了与硬件交互相关的细节都发生在网络访问层,使得TCP/IP能够工作于多种不同的传输介质。以下是集中网络体系的类型:
物理寻址
1. 网络访问层需要把逻辑IP地址与网络适配器的固定物理地址相关联。
2. 物理寻址是由介质访问控制(MAC)子层负责的。
3. TCP/IP使用地址解析协议(ARP)和逆向地址解析协议(RARP)把IP地址关联到网络适配器的物理地址。ARP和RARP为用户提供的逻辑IP地址与局域网上使用的硬件地址建立了一个对应关系。
以太网
1. 以太网是目前使用最广泛的局域网技术,是当今现有局域网采用的最通用的通信协议标准。
2. 在典型的以太网上,全部计算机共享同一个传输介质。以太网使用成为载波侦听多路访问/冲突检测(CSMA/CD)的方法,来判断计算机何时可以把数据发送到访问介质。通过CSMA/CD,所有计算机都监视传输介质的状态,在传输之前等待线路空闲。如果两台计算机尝试同时发送数据,就会发生冲突,计算机就会停止发送,等待一个随机的时间间隔,然后再次尝试发送。
3. 传统以太网在中低负载情况下运行良好,但在大负载情况下会由于冲突的增多而影响性能。在现代以太网中,像网络交换机这样的设备会对流量进行管理,减少冲突的发生,从而让以太网的运行更具效率。
剖析以太网帧
1. 网络访问层的软件从网际层接收数据报,把它转化符合物理网络规范的形式。在以太网中,网络访问层的软件必须把数据转化成能够通过网络适配器硬件进行传输的形式。
2.
四、网际层
寻址与发送
1. 物理寻址方式适合单个局域网网段。由不间断介质连接在一起的若干台计算机利用物理地址就可以实现所需要的功能。只需使用网络访问层的低级协议就可以把数据从网络适配器直接传递另一个网络适配器。但是,在路由式网络中,不能利用物理地址实现数据传输,因为根据物理地址进行传输所需的过程不能跨越路由接口来进行。
2. TCP/IP隐藏了物理地址,以一种逻辑化、层次化的寻址方案对网络进行组织。这种逻辑寻址方案由网际层的IP协议维护,而逻辑地址被称为IP地址。
3. 在一个路由式网络中,TCP/IP要使用如下策略在网络上发送数据:
网际协议
1. IP协议提供了一种分层的、与硬件无关的寻址系统,具有在复杂的路由式网络中传递数据所需的服务。TCP/IP网络上的每个网络适配器都有一个唯一的IP地址。
2. IP地址分为两个部分:网络ID和主机ID。网络必须提供一种方式来判断IP地址的哪一部分是网络ID,哪一部分是主机ID。
IP报头字段
1. 每个IP数据报都以一个IP报头开始。源计算机的TCP/IP软件构造这个IP报头,目的计算机的TCP/IP软件利用IP报头中封装的信息处理数据。IP报头包含大量信息,包括源IP地址、目的IP地址、数据报长度、IP版本号和路由器的特殊指令。
2. IP数据报由报头和数据两部分组成。报头由一个20字节的固定长度和一个可任选任意长度部分组成。IP数据报最长为65535字节。
IP寻址
1. 划分网络ID和主机ID的最初方案是使用地址分类。
2. A类:0.0.0.0~127.255.255.255
B类:128.0.0.0~191.255.255.255
C类:192.0.0.0~223.255.255.255
D类:224.0.0.0~239.255.255.255
E类:240.0.0.0~247.255.255.255
规定首字节不能是127、0、255,主机各位不能同时为0和1
3. 网络管理员可以把网络划分为更小的次级网络,这被称为子网。划分子网的是指就是借用主机ID中的一些为,在网络内创建额外的网络。AB类地址会广泛应用子网划分技术。
地址解析协议——ARP
1. ARP把IP地址映射为物理地址。主机必须知道目的网络适配器的物理地址才能向它发送数据。
2. 网段上每台主机在内存中都保存着一个被称为ARP表或ARP缓存的表格,其中包含了网段上其他主机的IP地址与物理地址的对应关系。当主机需要向网段上的其他主机发送数据时,它会查看ARP缓存来获得目的的物理地址。ARP缓存是动态变化的,如果要接收数据的地址当前并不存在于ARP缓存中,主机就会发送一个名为ARP请求帧的广播。
ARP请求帧包含为解析的IP地址,还包含发送这个请求的主机的IP地址和物理地址。网段上的其他主机接收到这个ARP请求,拥有这个未解析IP地址的主机会向发出请求的主机发送自己的物理地址。这个新的IP地址与物理地址的对应关系就会添加到请求主机的ARP缓存中。
逆向地址解析协议——RARP:在知道物理地址而不知道IP地址时,应该使用RARP。
INTERNET控制消息协议——ICMP
1. 发送到远程计算机的数据通常会经过一个或多个路由器,这些路由器在把数据传输到最终目的地的过程中可能发生多种问题。路由器利用ICMP协议把问题通知给源IP。ICMP还有用于调试和排错的功能。
2.
五、子网划分和CIDR
子网
1. 子网划分可以利用IP地址系统把物理网络分解为更小的逻辑实体——子网。
2. 子网的概念最早源自于地址分类系统,而且在ABC类地址中能够得到很好的展现。然而硬件厂商和internet社区建立了一种解析地址的新系统,名为无类别域间路由(CIDR),它不需要关心地址类别。
划分网络
1. ABC类网络ID来识别网段具有一些局限性,主要是在网络级别之下不能对地址空间进行任何逻辑细分。数据报到达某个网关(90.0.0.0)地址空间,但如果要考虑它在这个地址空间中是如何传递的,这个就会变得非常复杂,因为A类网络能够容纳超过1600万台主机。
2. 为了在大型网络里实现更高效的数据传输,地址空间被划分为较小的网段。唯一可行的解决办法是在网络标ID下对地址空间进行某种细分,让主机和路由器能够根据IP地址判断应该把数据发送到哪个网段。
3. TCP/IP的设计者借用了主机ID里的一些位来形成子网地址。一个名为子网掩码的参数指明了地址中多少位用于子网ID,保留多少位作为实际的主机ID。
4. 像IP地址一样,子网掩码是个32位的二进制值。子网掩码里的每一位代表IP地址中的一个位,用1表示IP地址中属于网络ID或子网ID的位,用0表示IP地址里属于主机ID的位。
5. 在子网网络上,路由器和主机所使用的路由表包含了每个IP地址相关的子网掩码信息。数据报根据网络ID被路由到目标网络,而这个网络ID是由地址类别决定的。当数据报到达目标网络之后,它根据子网ID路由到合适的网段。在到达这个网段之后,再根据主机ID传输到正确的计算机。
使用子网
1. 子网掩码决定了网络ID之后又多少位是作为子网ID的。子网ID的长度不是固定的,取决于子网掩码的值。子网ID越长,留给主机ID的位数就越少。
2. 全0或全1的主机ID是不能分配的
3.
无类别域间路由——CIDR
1. CIDR技术使用一个名为CIDR前缀的值指定地址中作为网络ID的位数。这个前缀有时也被称为变长子网掩码。
2. 这个前缀可以位于地址空间的任何位置,让管理者能够以更灵活的方式定义子网,以简便的形式指定地址网络ID部分与主机ID部分。
3. CIDR标记使用一个斜线/,后面跟一个十进制数值来表示地址中网络部分所占的位数。
4. 例如一个ISP被分配了一些C类网络,这个ISP准备把这些C类网络分配给各个用户群,已经分配了三个C类网段给用户,如果没有实施CIDR技术.ISP的路由器的路由表中会有三条下连网段的路由条目,并且会把它通告给Internet上的路由器.通过实施CIDR技术,我们可以在ISP的路由器上把这三个网段198.168.1.0,198.168.2.0,198.168.3.0汇聚成一条路由198.168.0.0/16.这样ISP路由器只向Internet通告198.168.0.0/16这一条路由,大大减少了路由表的数目.从而为网络路由器节省出了存储空间。 值得注意的是,使用CIDR技术汇聚的网络地址的比特位必须是一致的,如上例所示.如果上例所示的ISP连接了一个172.178.1.0网段,这些网段路由将无法汇聚,无法实现CIDR技术.
5. CIDR建立于“超级组网”的基础上,“超级组网”是“子网划分”的派生词,可看作子网划分的逆过程。子网划分时,从地址主机部分借位,将其合并进网络部分;而在超级组网中,则是将网络部分的某些位合并进主机部分。这种无类别超级组网技术通过将一组较小的无类别网络汇聚为一个较大的单一路由表项,减少了Internet路由域中路由表条目的数量。
六、传输层
传输层简介
1. 传输层需要提供如下功能:
2. 传输层为网络应用程序提供了一个接口。
3. 传输控制协议——TCP:TCP提供了完善的错误控制和流量控制,能够确保数据正确传输,它是一个面向连接的协议。
4. 用户数据报协议——UDP:UDP只提供了非常基本的错误检测,用于不需要TCP精细控制功能的场合,它是一个无连接的协议。
面向连接协议和无连接协议
1. 面向连接协议:会在通信计算机之间建立并维护一个连接,并且在通信过程中监视连接状态。通过网络传输的每个数据包都会有一个确认,发送端计算机会记录状态信息来确保每个数据包都被正确无误的接收了,并且在需要时会重发数据。当数据传输结束后,发送端和接收端计算机会以适当方式关闭连接。
2. 无连接协议:以单向方式向目的发送数据报,不承担通知目的计算机关于数据发送的职责。目的计算机接收到数据后也不需要向源计算机返回状态信息。
端口和套接字
1. 在TCP/IP系统中,应用程序可以使用端口号通过TCP或UDP指定数据目的地。端口是一个预定义的内部地址,充当从应用程序到传输层或是从传输层到应用程序的通路。
2. TCP或UDP数据实际是被发送到一个套接字上的。套接字是一个由IP地址和端口号组成的地址。
多路复用/多路分解
1. 多路复用是指把多个来源的数据导向一个输出,而多路分解是把从一个来源接收的数据发送到多个输出。多路传输/多路分解让TCP/IP协议栈较低层的协议不比关心哪个程序在传输数据。与应用程序相关的操作都由传输层完成了,数据通过一个与应用程序无关的管道在传输层与网际层之间传递。
2. 多路复用是指两个或多个用户共享公用信道的一种机制。通过多路复用技术,多个终端能共享一条高速信道,从而达到节省信道资源的目的,多路复用有频分多路复用(FDMA),时分多路复用(TDMA),码分多路复用(CDMA)几种。
TCP:面向连接的传输协议
1. TCP重要特性:
2. TCP数据格式:
need-to-insert-img
need-to-insert-img
need-to-insert-img
3. TCP连接:TCP通过连接发送和接收数据,而这个连接必须根据TCP的规则进行请求、打开和关闭。TCP的功能之一是为应用程序提供访问网络的接口。这个接口是通过TCP端口提供的,而为了通过端口提供连接,必须打开TCP与应用程序的接口。 被动打开——某个应用程序进程通知TCP准备通过TCP端口接收连接,这样就会打开TCP到应用程序的连接,从而为参与连接请求做准备。 主动打开——程序要求TCP发起与另一台计算机的连接,这就是主动打开状态。
need-to-insert-img
4. 建立连接:三次握手总是发生在TCP连接建立的初期 。需要三次握手的原因——TCP的三次握手最主要是防止已过期的连接再次传到被连接的主机。
need-to-insert-img
need-to-insert-img
5. TCP流量控制(滑动窗口方法):接收端计算机利用“窗口”字段(也被称为“缓存大小”字段)来定义一个超过最后一个已确认序列号的序列号“窗口”,在这个范围内的序列号才允许发送端计算机进行发送。发送端计算机在没有接收到下一个确认消息之前不能发送超过这个窗口的序列号。
6. 关闭连接:计算机A发送一个数据分段,其中的FIN标记设置为1。之后应用程序进入"fin-wait"状态。在这个状态下,计算机的TCP软件继续接受数据分段,并处理已经在序列中的数据分段,但不再从应用程序接收数据了。当计算机B接收到FIN数据分段时,它返回FIN确认信息,然后发送剩余的数据分段,通知本地应用程序接收到了FIN消息。计算机B向计算机A发送一个FIN数据分段,计算机A返回确认信息,连接就被关闭了。
need-to-insert-img
【注意】中断连接端可以是Client端,也可以是Server端。假设Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK,"告诉Client端,你的请求我收到了,但是我还没准备好,请继续你等我的消息"。这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文。当Server端确定数据已发送完成,则向Client端发送FIN报文,"告诉Client端,好了,我这边数据发完了,准备好关闭连接了"。Client端收到FIN报文后,"就知道可以关闭连接了,但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。“,Server端收到ACK后,"就知道可以断开连接了"。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。Ok,TCP连接就这样关闭了!
need-to-insert-img
need-to-insert-img
双方同时要求关闭连接:ESTAB->FIN-WAIT-1->CLOSING->TIME-WAIT->CLOSED TIME-WAIT状态之后等待2MSL(包的最大保存时间)是为了确保所有该连接上的包都已在网络消失。
7. TCP如何保证可靠性:TCP的可靠性是通过顺序编号和确认(ACK)来实现的。TCP在开始传送一个段时,为准备重传而首先将该段插入到发送队列之中,同时启动时钟。其后,如果收到了接受端对该段的ACK信息,就将该段从队列中删去。如果在时钟规定的时间内,ACK未返回,那么就从发送队列中再次送出这个段。TCP在协议中就对数据可靠传输做了保障,握手与断开都需要通讯双方确认,数据传输也需要双方确认成功,在协议中还规定了:分包、重组、重传等规则;而UDP主要是面向不可靠连接的,不能保证数据正确到达目的地。
UDP:无连接传输协议
1. UDP实际上能够执行基本的错误检验,因此,可以说UDP具有有限的错误检验功能。UDP数据报中包含一个校验和,接收端计算机可以利用它来检验数据的完整性。
2. UDP的开销没有TCP大。
3. UDP不会重新传输丢失或损坏的数据报、重新排列混乱的接收数据、消除重复的数据报、确认数据报的接收、建立或是终止连接。它主要是在程序不必使用TCP连接开销的情况下发送和接收数据报的一种方式。
七、应用层
TCP/IP应用层与OSI
1. TCP/IP应用层对应于OSI模型的应用层、表示层和会话层。
2. 应用层:OSI的应用层包含的组件为用户应用程序提供服务并支持网络访问。
3. 表示层:表示层把数据转化为平台无关的格式,并处理加密和数据压缩。
4. 会话层:负责管理联网计算机上应用程序之间的通信,提供了一些传输层不具备、与连接相关的功能,比如名称识别和安全。
应用层的部分协议
need-to-insert-img
API和应用层:应用编程接口(API)是预定义的编程组件的集合,应用程序可以利用它访问操作环境的其他部分,也就是与操作系统进行通信。网络协议栈就是API概念的典型应用,网络API提供了程序与协议栈的接口,应用程序利用API的函数打开和关闭连接、从网络读取和写入数据。
八、路由选择
路由器的概念
1. 路由器是负责根据逻辑地址对通信流量进行过滤的设备。经典的网络路由器工作于网际层,使用网际层报头中的IP寻址信息。
2. 向Internet这样的大型网络具有很多路由器,提供了从源到目的节点的多条路径。这些路由器必须独立工作,但整个系统必须保证数据能够准确高效地在网络中传输。
3. 当路由器将数据从一个网络传输到下一个网络时,它会替换网络访问层报头信息,因此路由器可以连接不同类型的网络。很多路由器还维护关于最佳路径的详细信息,这是根据距离、带宽和时间综合考虑的。
4. 早期的路由器实际上就是具有两块或多块网络适配器的计算机(也被称为多宿主计算机)。
need-to-insert-img
路由选择过程
1. 路由器全面功能:
need-to-insert-img
2. 路由表和建立路由表的协议是路由器具有的两个显著特性。对于路由器的大多数讨论都是关于建立路由表、汇集路由表的路由协议如何让所有的路由器像一个整体一样提供服务。
3. 静态路由:要求网络管理员手工输入路由信息。
4. 动态路由:根据使用路由协议获得的路由信息来动态建立路由表。
路由表的概念
1. 路由表和忘记曾其他路由元素的用途在于把数据传递到正确的本地网络。当数据到达本地网络之后,网络访问协议就会知道它的目的地。因此,路由表不需要存储完整的IP地址,只需要列出网络ID即可。
2.
need-to-insert-img
路由表就是把目的网络ID映射到下一跳的IP地址,即数据报通往目的网络的下一站。路由表会区分直接连接到路由器本身的网络和通过其他路由器间接连接过来的网络。下一跳可以是目的网络,也可以是通向目的网络的下一个下游路由器。
IP转发
1. 主机的路由表比路由器简单得多,它可能只包含两行:一个条目用于本地网络,另一个用于默认路由(用于处理不能在本地网段上传输的数据包)。
2. IP转发过程实际上不会再IP报头中写入路由器的地址,而是由主机把数据报和路由器的IP地址向下传递到网络访问层,该层的协议软件会使用一个独立的查询过程把数据包封装到一个帧中,通过本地网段传递给路由器。换句话说,被转发的数据报里的IP地址指向最终要接收数据的主机 ,而转发数据报的帧中的物理地址指向路由器上本地适配器的地址。
3.
need-to-insert-img
直接路由和间接路由
1.
need-to-insert-img
2. 路由器了解间接路由的方式有两种:从系统管理员和从其他路由器。这两种方式分别对应静态路由和动态路由。
3. 大多数现代路由器使用了某种形式的动态路由。路由器彼此之间的相互通信,共享关于网段和网络路径的信息,每台路由器都根据从这种通信过程中得到的信息建立自己的路由表。
动态路由算法——距离矢量路由
1. 距离矢量路由是一种高效、简单的路由方法,被很多路由协议所采用。其设计目标是让路由器之间所需的通信最少,让路由表中必须保存的数据最少。这种设计理念认为路由器不必知道通向每个网段的完整路径,而是只需知道向哪个方向发送数据报即可。
2. 网段之间的距离以数据报在两个网络之间传输必须经过的路由器的数量来表示,而使用距离矢量路由的路由器优化路径的方式是让数据报必须经过的路由器达到最少。这个距离参数成为“跳数”。
3. 距离矢量路由的工作方式:
need-to-insert-img
need-to-insert-img
动态路由算法——链路状态路由:连接状态路由背后的理念在于每个路由器都尝试建立关于网络拓扑的内部映射。每台路由器定期向网络发送状态信息,其中列出了自己直连的其他路由器以及链路的状态。路由器利用从其他路由器收到的状态消息建立网络拓扑的映射,当它需要转发数据报时,会根据现有条件选择最佳路径。
复杂网络上的路由
1. 对于internet上的路由器来说,并不是每台路由器都需要知道其他所有路由器的信息。在网络有效组织的情况下,大多数路由器只需要与相邻路由器交互协议信息即可。
2. 在孕育了internet的ARPnet系统中,一组核心路由器作为网络互联的中央骨干网,把自动配置和管理的独立网络连接在一起。核心路由器了解每个网络,但不必知道每个子网。只要数据报能够找到到达核心路由的路径,就能够到达整个网络的任何位置。附属网络中的路由器不必了解世界上的全部网络,只需要知道如何在相邻路由器之间如何传输数据和如何到达核心路由器即可。
3.
need-to-insert-img
路由选择协议
1. 因特网有两大类路由选择协议:内部网关协议IGP(Interior Gateway Protocol)即在一个自治系统内部使用的路由选择协议。目前这类路由选择协议使用得最多,如RIP和OSPF协议。外部网关协议EGP(External Gateway Protocol)若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议EGP。在外部网关协议中目前使用最多的是BGP-4。
2. 路由信息协议RIP是内部网关协议IGP中最先得到广泛使用的协议。RIP是一种分布式的基于距离向量的路由选择协议。RIP协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。距离的解释:从一路由器到直接连接的网络的距离定义为1。从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加1。RIP协议中的“距离”也称为“跳数”(hop count),因为每经过一个路由器,跳数就加1。这里的“距离”实际上指的是“最短距离”。RIP认为一个好的路由就是它通过的路由器的数目少,即“距离短”。RIP允许一条路径最多只能包含15个路由器。“距离”的最大值为16时即相当于不可达。可见RIP只适用于小型互联网。RIP不能在两个网络之间同时使用多条路由。RIP选择一个具有最少路由器的路由(即最短路由)哪怕还存在另一条高速(低时延)但路由器较多的路由。
3. “开放”表明OSPF协议不是受某一家厂商控制,而是公开发表的。“最短路径优先”是因为使用了Dijkstra提出的最短路径算法SPF。OSPF只是一个协议的名字,它并不表示其他的路由选择协议不是“最短路径优先”。是分布式的链路状态协议。
4. BGP是不同自治系统的路由器之间交换路由信息的协议。边界网关协议BGP只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。
九、连网
拨号连接
1. 连接TCP/IP网络的一种最常用的方式是通过电话线,而近几年,向电缆调制解调器和DSL这样的宽带技术降低了拨号连接的重要性。调制解调器(modem)通过电话线提供网络访问,它的作用在于把来自计算机的数字传输转化为能够通过电话系统的端口进行传输的模拟信号,也把来自电话线的模拟信号转化为计算机能够理解的数字信号。
2. 电话线两段的计算机不需要与其他计算机争用传输介质,他们只需要在彼此之间共享介质就可以了。这种连接方式被称为点到点连接。
3. 调制解调器协议:串行线路网际协议(SLIP)——基于TCP/IP的早期调制解调器协议,相对简单,有很多局限性。点到点协议(PPP)——最初当前用于调制解调器连接的最流行协议,是对SLIP的细化,具有SLIP所不具备的很多重要特性。
电缆宽带:电缆调制解调器直接连接到一条同轴电缆,后者被连接到有线电视服务网络上。这个调制解调器通常具有一个以太网接口,可以连接到单台计算机或小型局域网中的交换机或路由器。电缆调制解调器实现数字信号与模拟信号的转换,从而让数据能够通过电缆连接高效传输。
need-to-insert-img
连接设备
1. 网桥:根据物理地址过滤和转发数据包的连接设备,它工作与OSI模型的数据链路层。网桥监听它所连接的每个网段,建立一个表来反应物理地址位于哪个网段。当数据在一个网段上传输时,网桥会查看数据的目的地址,与路由表进行比较。如果目的地址属于发送数据的网段,网桥就忽略这个数据。如果目的地址在不同的网段,网桥就把数据转发到适当的网段。如果目的地址不在路由表,网桥就会把数据转发到除源网段之外的全部网段。
2. HUB(集线器):作为一个物理设备从一个端口接收数据,然后把数据重复到其余全部的端口。换句话说,全部计算机就好像是被一条连续线路连接在一起的。HUB不会过滤或路由任何数据,知识接收和重新发送信息。
need-to-insert-img
3. 交换机:每台计算机也是通过一条线路连接到交换机。但是,交换机知道应该把接收到的数据发送到哪一个端口。大多数交换机把端口与所连接设备的物理地址关联起来。当一个端口所连接的计算机发送数据帧时,交换机会查看帧的目的地址,把帧发送到目的地址相关联的端口。
need-to-insert-img
十、名称解析
使用主机文件进行名称解析
1. 主机文件是一个保存有一个主机名、相关IP地址列表的文件。主机名解析实在更复杂的DNS名称解析之前被开发出来的。
2. 在小型网络上配置主机名解析通常很简单。支持TCP/IP的操作系统都能识别主机文件,并可以将它用于名称解析,而且期间几乎不需要用户干预。
3. 配置名称解析的大致步骤如下:为每台计算机分配IP地址和主机名;创建映射了IP地址和所有计算机主机名的主机文件。这些文件的名称一般是hosts;将主机文件放置每台计算机的指定位置上。对于具体位置每种操作系统都有自己的规定。
DNS名称解析
1. DNS会将名称解析数据防止在一个或多个专用服务器上,由DNS服务器为网络提供名称解析服务。如果网络上计算机需要将某个主机名解析成IP地址,会向服务器发送一个查询,询问与这个地址关联的主机名。如果DNS服务器保存了相应的地址,就将这个地址返回给发出请求的计算机。接下来,这台计算机会用IP地址来替代主机名,进而再执行命令。
2. DNS服务器又多个有点,它为本地网络提供了一个单一的DNS配置点,使得网络资源的利用更加有效。然而,DNS无法高效地保存Internet上所有主机名的数据库。解决办法是,使所有名称服务器都可以彼此通信。
3. 如果DNS在自己保存的地址数据库中发现了被请求的地址,则将这个地址发回给客户端。如果名称服务器在自己保存的记录中没有找到这个地址,会要求其他的名称服务器查找这个地址,接着将这个地址发回给客户端。
4. 工作原理:当DNS客户机需要在程序中使用名称时,它会查询DNS服务器来解析该名称。客户机发送的每条查询信息包括三条信息:包括:指定的DNS域名,指定的查询类型,DNS域名的指定类别。基于UDP服务,端口53. 该应用一般不直接为用户使用,而是为其他应用服务,如HTTP,SMTP等在其中需要完成主机名到IP地址的转换。
浏览器输入网址之后的过程
1. 应用层:客户端浏览器通过DNS解析到www.baidu.com的IP地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到220.161.27.48,然后通过TCP进行封装数据包,输入到网络层。
need-to-insert-img
DNS解析IP地址
need-to-insert-img
HTTP访问服务器
2. 传输层:在客户端的传输层,把HTTP会话请求分成报文段,添加源和目的端口,如服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口如5000,与服务器进行交换,服务器把相应的请求返回给客户端的5000端口。然后使用IP层的IP地址查找目的端。
3. 客户端的网络层不用关心应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,通过查找路由表决定通过那个路径到达服务器,其中用到路由选择协议。
4. 客户端的链路层,包通过链路层发送到路由器,通过邻居协议查找给定IP地址的MAC地址,然后发送ARP请求查找目的地址,如果得到回应后就可以使用ARP的请求应答交换的IP数据包现在就可以传输了,然后发送IP数据包到达服务器的地址。不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。每一个主机都设有一个 ARP 高速缓存(ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。如有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址。
十一、TCP/IP安全
防火墙
1. 防火墙就是一个放置在网络路径上的设备,它可以检查、接受或拒绝打算进入网络的数据包。防火墙和传统的路由器最重要的区别是传统路由器会尽可能转发数据包,而防火墙则只转发自己认可的数据包。对数据包的转发决定不再是仅基于地址,而是基于网络所有者配置的一组规则,这些规则可以确定哪些流量类型能被网络所允许。
2. 防火墙可以阻止任何或者所有的外界流量进入网络,但是它并不干涉内部网络中的通信。
need-to-insert-img
3. 当代的防火墙通常是包过技术、状态查看和应用层过滤技术的组合。一些防火墙还可以作为DHCP服务器和网络地址转换工具。防火墙可以是硬件也可以是软件,既可以简单又可以复杂。
4. 最早的防火墙是数据包过滤器。它通过检查数据包来找出该数据包的企图。许多包过滤防火墙会查看封装在传输层报头中的TCP和UDP端口号,可以确定数据包的企图。
5. 防火墙进化过程中,出现了有状态防火墙设备。有状态防火墙不仅仅是单独检查每一个数据包,还会检查数据包包含在哪个通信会话序列中。这种状态敏感性有助于有状态防火墙监视诸如无效数据包、会话劫持企图,以及某些拒绝服务攻击这样的攻击手段。
6. 应用层防火墙是最新一代防火墙。这种防火墙是在TCP/IP应用层工作的,在这里可以更全面地理解与协议和服务相关联的数据包。
代理服务
1. 所有用来保护和简化内部网络,将潜在的不安全Internet活动限制在边界之外的技术中,防火墙是核心技术。另一种相关的技术是代理服务。
2. 代理服务器可以截获对Internet资源的请求,并替代客户端转发这些请求,它在客户端和请求的目的服务器之间扮演了一个中介的角色。
need-to-insert-img
3. 通过代理客户端发送和接受Internet请求,代理服务器可以使客户端免于直接与恶意网站联系。一些代理还可以执行内容过滤,查看信息是否来自黑名单上的服务器,或者内容是否带有潜在的危险。代理客户端还常被用来限制内部网络客户端的浏览范围。
保护TCP/IP:http://kb.cnblogs.com/page/162080/http://www.guokr.com/post/114121/
1. 安全套接字(SSL)是为了保护WEB通信而引入的一个TCP/IP安全协议集。SSL的目的是,在传输层上的套接字和提供那些套接字访问网络的应用程序之间提供一层安全。
need-to-insert-img
2. SSL包含有两个子层。SSL记录协议是访问TCP的一个标准库。在这个记录协议纸上,是一组执行特定服务的SSL相关协议。
need-to-insert-img
3. 支持SSL的服务直接通过SSL记录协议运行。在连接建立之后,SSL记录协议提供确保会话机密性和完整性所需的加密和验证。
4. 如同其他协议安全技术一样,这里的技巧是要检验参与者的身份和安全地交换将用来加解密数据传输的密钥。SSL采用公开密钥加密,并提供对数字这个数的支持。
5. 在SSL中会使用密钥交换算法交换密钥;使用密钥对数据进行加密;使用散列算法对数据的完整性进行验证,使用数字证书证明自己的身份。
6. 握手协议:握手协议是客户机和服务器用SSL连接通信时使用的第一个子协议,握手协议包括客户机与服务器之间的一系列消息。SSL中最复杂的协议就是握手协议。该协议允许服务器和客户机相互验证,协商加密和MAC算法以及保密密钥,用来保护在SSL记录中发送的数据。握手协议是在应用程序的数据传输之前使用的。
7. 记录协议:记录协议在客户机和服务器握手成功后使用,即客户机和服务器鉴别对方和确定安全信息交换使用的算法后,进入SSL记录协议,记录协议向SSL连接提供两个服务——
need-to-insert-img
8. 警报协议:客户机和服务器发现错误时,向对方发送一个警报消息。如果是致命错误,则算法立即关闭SSL连接,双方还会先删除相关的会话号,秘密和密钥。每个警报消息共2个字节,第1个字节表示错误类型,如果是警报,则值为1,如果是致命错误,则值为2;第2个字节制定实际错误类型。
十二、配置
服务器提供IP地址的情况
1. 每一台计算机都已经预先配置了一个IP地址。这种情况被称为静态IP地址。每一台计算机在启动时就知道自己的IP地址,并且能够立刻使用网络。静态IP寻址在小型网络中表现得很好,但是由于大型网络上经常会出现重新配置和更改的情况,因此静态IP寻址也受到很多限制。
2. 静态IP地址的缺点:
need-to-insert-img
DHCP
1. DHCP是一个用来向计算机分配TCP/IP配置参数的协议。DHCP服务器可以为DHCP客户端提供一组TCP/IP设置,比如IP地址、子网掩码和DNS服务器地址。
2. DHCP是用来分配IP地址的,所以必须使用静态IP地址信息来配置DHCP服务器。需要在客户端进行配置的唯一一个网络参数是将客户端设置为从DHCP服务器接收IP地址信息。
3. 当DHCP客户端计算机启动时,TCP/IP软件将被载入到内存中并开始执行相应的操作。然而,因为这是TCP/IP栈还没有IP地址,所以无法直接发送或接收数据包。计算机只能发送和监听广播数据。这种通过广播进行通信的功能正是DHCP进行工作的基础。从DHCP服务器中租用IP地址的过程需要4个步骤:
网友评论