计算机网络复习时是参考《图解TCP/IP》这本书来复习的,下面是读书时记录的一些基本的概念,计算机网络中需要记忆的概念比较多。
分时系统的重要特性包括多路性,独占性,交互性和独占性。
在计算机通信中,事先达成的一个详细的约定,并遵循这一约定进行处理尤为重要,这种约定其实就是“协议”。
分组交换就是指将大数据分割为一个叫做包(package)的较小单位进行传输的方法。
上下层之间进行交互时所遵循的约定叫做“接口”,同一层之间交互所遵循的约定叫做“协议”。
OSI参考模型中各个分层的作用:
- 应用层:针对特定应用的协议。
- 表示层:设备固有数据格式和网络标准数据格式之间的转换。
- 会话层:通信管理,负责建立和断开通信链接(数据流动的逻辑通路)。
- 传输层:管理两个节点之间的数据传输,负责可靠传输(确保数据被可靠地传输到目标地址)。
- 网络层:地址管理和路由选择。
- 数据链路层:互连设备之间传输和识别数据帧。
- 物理层:以“0”,“1”代表电压的高低,灯光的闪灭界定连接器和网线的规格。
会话层负责决定建立连接和断开连接的时机,而传输层进行时机的建立和断开处理。
网络层与数据链路层:
网络层于数据链路层都是基于目标地址将数据发送给接收端的,但是网络层负责将整个数据发送给最终的目标地址,而数据链路层则只负责发送一个分段内的数据。
通过网络发送数据,大致可以分为面向有连接与面向无连接两种类型。
网络通信方式大致可以分为两种:电路交换和分组交换。
根据接收端数量分类:单播,广播,多播,任播。
mac参考的表叫做地址转发表;IP寻址参考的表叫做路由控制表。
- 网卡:使计算机联网的设备。
- 集线器/中继器:从物理层上延长网络的设备。
- 网桥/2层交换机:从数据链路上延长网络的设备。
- 路由器/3层交换机:通过网路层转发分组数据的设备。
- 4-7层交换机:处理传输层以上各层网路传输的设备。
- 网关:转换协议的设备。
数据链路:意指相互直连的设备之间进行通信所涉及的网络及其协议。
数据链路名 | 通信媒介 | 传输速度 | 主要用途 |
---|---|---|---|
以太网 | 同轴电缆 双绞线电缆 光纤电缆 | 10Mbps 10Mbps~100Gbps 10Mbps~100Gbps | LAN LAN LAN |
无线 | 电磁波 | 整个Mbps | LAN~WAN |
ATM | 双绞线电缆 光纤电缆 | 25Mbps,155Mbps 622Mbps | LAN~WAN |
FDDI | 光纤电缆 双绞线电缆 | 100Mbps | LAN~WAN |
帧中继 | 双绞线电缆 光纤电缆 | 约64kb~1.5Mbps | WAN |
ISDN | 双绞线电缆 光纤电缆 | 6.4kb~1.5Mbps | WAN |
两个设备之间数据流动的物理速度称为传输速率。单位为bps(bit per second),又称为带宽。主机之间时机的传输速度称为吞吐量,其单位与带宽相同。吞吐量不仅衡量带宽,同时也衡量主机CPU处理能力,网络的拥堵程度,报文中速度字段的占有份额(不含报文首部,只计算数据字段本身)等信息。
采用虚拟化技术,根据使用者的情况动态地调整必要资源的机制被人们称作“云”。
包,帧,数据报,段,消息:
包可以说是全能性的术语
帧用于表示数据链路层中包的单位
数据报是IP和UPD等网络层以上的分层中包的单位
段则表示TCP数据流中的信息
消息是指应用协议中数据的单位
FDDI和ATM:
FDDI:Fiber Distributed Data Interface :光纤分布式数据接口
ATM:Asynchronous transfer Mode 异步传输方式
网络的连接和构成的形态称为网络拓扑(Topology),网络拓扑包含总线型,环型,星型,网状型。
半双工与全双工通信:
半双工是指只发送或只接受的通信方式。它类似于无线电收发器,若两端同时说话,是听不到对方说的;全双工不同,它允许在同一时间即可以发送数据可以接受数据。
数据链路层分为介质访问层和逻辑链路控制层。介质访问控制层根据以太网或FDDI等不同数据链路所特有的首部信息进行控制。与之相比,逻辑链路层则根据以太网或FDDI等不同数据链路所共有的帧头信息进行控制。
网络层的主要作用是是实现终端节点之间的通信。这种终端节点之间的通信也叫“点对点”通信。
数据链路层的主要作用是在互连同一种数据链路的节点之间进行包传递。而一旦跨越多种数据链路就需要借助网络层。网络层可以跨越不同的数据链路,即使是在不同的物理数据链路上也能实现两个节点之间的数据报传递。
路由控制是指中转分组数据包。
主机的更准确定义是“配置有IP地址”但不进行路由控制的设备,即配有IP地址也具有路由控制能力的设备叫做“路由器”,跟主机有所区别,而节点则是主机和路由器的统称。
IP大致可以分为三大作用模块:它们是IP寻址,路由以及IP分包与组包。
路由控制(Routing)是指将分组数据发送到最终目的地址的功能。即使网络非常复杂,也可以通过路由控制确定到达目标地址的通路。一旦这个路由控制运行出现异常,分组数据极有可能“迷失”,无法到达目标地址。因此,一个数据包之所以能够成功到达最终的目标地址,全靠路由控制。
一跳是指利用数据链路层以下分层的功能传输数据帧的一个区间。
以太网等数据链路中使用MAC地址传输数据帧,此时的一跳是指从源MAC地址到目标MAC地址之间传输帧的区间,也就是说它是主机或路由器网卡不经过其它路由器而能到达的相邻主机或路由器网卡之间之间的一个区间。在一跳这个区间内,电缆可以通过网桥或交换集线器相连,不会通过路由器或网关相连。
为了将数据包发送给目标主机,所有主机都维护着一张路由控制表(Routing table)。该表记录IP数据在下一步应该发送给那个路由器,IP包将根据这个路由表在各个数据链路上传输。
不同数据链路有个最大的区别,就是它们的个自的最大传输单位(MTU:Maximun Transmission Unit)不同。
IP面向无连接,即在发包之前不需要建立与对端目标地址之间的连接。上层如果遇到需要发送给IP的数据,该数据会立即压缩成IP包发送出去。
IP地址并非根据主机台数来配置的,而是每一台主机上的每一块网卡(NIC)都得设置IP地址。通常一块网卡只能设置一个IP地址,其实一块网卡也可以配置多个IP地址。此外,一台路由器通常都会配置两个以上的网卡,因此可以设置两个以上的IP地址。
IP地址的分类:
- A类IP地址以“0”开头,第一位到第8位是网络标示,从0.0.0.0~127.0.0.0。
- B类IP地址以“10”开头,第一位到第16位是网络标示,从128.0.0.0~191.255.0.0
- C类IP地址以“110”开头,第一位到第24位是网络标示,从192.0.0.0~223.255.255.0
- D类IP地址以“1110”开头,第一位到第32位是网络标示,从224.0.0.0~239.255.255.255,常用于多播
关于分配IP主机地址时的注意事项:
在分配IP地址时关于主机标示有一点需要注意。即要用比特位表示主机地址时,不可以全部为0或全部为1.因为全部为0只有在标示对应的网络地址或IP地址不可知的情况下才使用,而全部为1的主机地址通常作为广播地址。
广播分为本地广播和直接广播两种:
- 在本网络内的广播叫做本地广播
- 在不同网络之间的广播叫做直接广播
多播用于将包发送给特定组内的所有主机,由于其直接使用IP协议,因此也不存在可靠传输。
多播使用D类地址,因此,如果从首位开始到第4位是“1110”,就可以认为是多播地址,而剩下的28可以成为多播的组编号。
网络标示相同的计算机必须属于同一链路。
环回地址:127.0.0.01 ,localhost
路径MTU(path MTU)是指从发送端主机到接收端主机之间不需要分片时最大MTU的大小,即路径中存在的所有数据链路中最小的MTU,而路径MTU发现从发送主机按照路径MTU的大小将数据报分片后进行发送,进行路径MTU发现,就可以避免在中途的路由器上进行分片处理,也可以在TCp中发送更大的包。
域名服务器是指管理域名的主机和相关的软件,它可以管理所在分层的域的相关信息。其所管理的分层叫做Zone,每一层都设有一个域名服务器。
进行DNS查询的主机和软件叫做DNS解析器。一个解析器至少要注册一个以上域名服务器的IP地址。通常,它至少包括组织内部的域名服务器的IP地址。
ARP(Address Resolution Protocol)是一种解决地址问题的协议。以目标IP地址为线索,用来定位一个下一个应该接收数据分包的网络设备对应的MAC地址。如果目标主机不再同一链路上时,可以通过ARP查找下一跳路由器的MAC地址,不过ARP只适用于IPV4,不能用于IPV6,IPV6中可以用ICMPV6替代ARP发送邻居搜索消息。
DHCP:动态主机配置协议,Dynamic Host Configuration Protocol
RARP:逆地址解决协议,Reverse Address Resolution Protocol,是将ARP反过来,从MAC地址定位IP地址的一种协议。例如将打印机服务器等小型嵌入式设备接入到网络时就会经常用到。
架构IP网络时需要特别注意两点:确定网络是否正常工作,以及遇到异常时进行问题诊断。
ICMP:Internet Control Message Protocol ,控制报文协议。
ICMP的主要功能包括:
1. 确认IP包是否成功送达目标地址
2. 通知在发送过程中当中IP包被废弃的具体原因
3. 改善网络设置等
有了上面这些功能,就可以获得网络是否正常,设置是否有误以及设备有何异常等信息,从而便于进行网络上的问题诊断。
ICMP主要负责在IP主机,路由器之间传递控制消息。
在ICMP中,包以明文的形式像TCP/UDP一样通过IP进行传输,然而ICMP所承担的功能并非传输层的功能的补充,而应该把它考虑为IP的一部分。
ICMP的消息大致可以分成两类:一类是通知出错原因的错误消息,另一类是用于诊断的查询消息。
主要的ICMP消息:
1. ICMP目标不可达消息:IP路由器无法将IP数据包发送给目标IP地址时,会给发送端主机返回一个目标不可达的ICMP消息。并在这个消息中显示不可达的具体原因。
2. ICMP重定向消息:如果路由器发现发送端主机使用了次优的路径发送数据,那么它就会返回一个ICMP重定向的消息给这个主机,这个消息中包含了最合适的路由信息和源数据。这主要发生在路由器持有更好的路由信息的情况下,路由器会通过这样的ICMP消息给发送端主机一个更合适的发送路由。
3. ICMP超时消息:IP包中有一个字段叫做TTL(time to live ,生存周期),它的值随着每经过一次路由就会减1,直到减到0时该IP包会被丢弃。此时,IP路由器将会发送一个ICMP超时的消息给发送端主机,并通知该包已被丢弃。
4. ICMP回送消息:用于进行通信的主机或路由器之间,判断发送的数据包是否已经成功倒带对端的一种消息。可以向对端主机发送回送请求的消息,也可以接收对端主机发送过来的回送应答消息。最常用的ping消息就是利用这个消息实现的。
在发送DCHP发现包与DHCP请求包时,DHCP即插即用的IP地址尚未确定,此时,DHCP发现包的目标地址是广播地址255.255.255.255.而源地址为0.0.0.0,标示未知。
为了检查所要分配的IP地址以及已经分配了的IP地址是否可用,DHCP服务器或DHCP客户端必须具备以下功能:
1. DHCP服务器:在分配IP地址前发送ICMP回送请求包,确认没有返回应答。
2. DHCP客户端:针对从DHCP哪里获得的IP地址发送ARP请求包,确认没有返回应答。
NAT(Network Address Translator)是用于在本地网络中使用私有地址,在连接互联网时转换而使用全局IP地址的技术,除了转换IP地址外,还出现了可以转换TCP,UDP端口号的NAPT(Network Address Ports Translator)技术,由此可以实现用于全局地址与多个主机的通信。
局域网设置为私有IP地址,在与外部通信时被替换成全局IP地址。
在NAT(NAPT)路由器的内部,有一张自动生成的由来转换地址的表。当私有网络内的多台机器同时要与外部进行通信时,仅仅转换IP地址,人们不免担心全局IP地址是否不够用,这时采用与端口号一起转换的方式(NAPT)可以解决这个问题。
NAT的潜在问题:
由于NAT(NAPT)都依赖于自己的转换表,因此会有如下几点限制:
1. 无法从NAT的外部向内部服务器建立连接
2. 转换表的生成与转换操作都会产生一定的开销
3. 通信过程中一旦NAT遇到异常需要重新启动时,所有TCP连接都将重置。
4. 即使备置两台NAT做容灾备份,TCP连接还是会被断开。
在一个如图所示的网络环境中,网络A,B使用IPV6,如果处于中间位置的网络C支持使用IPV4的话,网络A与网络B之间将无法直接进行通信,为了它们之间正常通信,这时必须采用IP隧道的功能。
一般情况下,紧接着IP首部的是TCP或UDP的首部,然后,现在的应用当中,“IP首部后面还是IP首部”或者“IP首部的后面是IPV6首部”等情况与日剧增,那种在网络层的首部后面继续追加网络层首部的通信方式就叫做“IP隧道”。
IP隧道中可以将那些从网络A发送过来的IPV6的包统和为一个数据,再为之追加一个IPV4的首部以后转发给网络C。
IGMP(Internet Group Management Protocol)主要有两个作用:
1. 向路由器表明想要接收消息(并通知想要接收多播的地址)
2. 向交换集线器通知想要接收多播的地址
IP任播是指为那些同一种服务的服务器配置同一个IP地址,并与最近的服务器进行通信的一种方法,最著名的当属DNS根域名服务器。
显示拥塞通知就是在发送包的IP首部中记录路由器是否遇到拥塞,并在返回包的TCP首部中通知是否发生过拥塞,拥塞检查在网络层进行,而拥塞通知在传输层进行,这两层的互相协助实现了拥塞通知的功能。
TCP/IP中有两个具有代表性的传输层协议,它们分别是TCP和UDP,TCP提供可靠地通信传输,而UDP则常被用于让广播和细节控制交给应用的通信传输。
TCP:Transmission Control Protocol
UDP:User Datagram Protocol
TCP/IP的众多应用协议大多以客户端/服务端的形式运行,客户端类似于客户的意思,是请求的发起端,而服务端则标示提供服务的意思,是请求的处理端,另外,作为服务端的程序有必要提前启动,准备接受 端的请求,否则即使有客户端的请求发过来,也无法做相应的处理。
这些服务端程序在Unix系统中叫做守护进程。例如Http的服务端程序是httpd(http守护进程),而ssh的服务端程序是sshd(ssh守护进程),在unix中并不需要将这些守护进程逐个启动,而是启动一个可以代表他们接受客户端请求的inetd(互联网守护进程)服务程序即可,它是一种超级守护进程,该超级守护进程收到客户端请求以后会创建fork()新的进程并转换exec为sshd等各个守护进程。
http:80 ,ssh:22 ,ftp:21 ,telnet:23 ,DNS:53
传输协议TCP,UDP通过接收数据中的目标端口号识别目标处理程序。
在TCP/IP中能够实现传输层功能的,具有代表性的协议是TCP和UDP。
TCP:TCP是面向连接的,可靠的流协议,流就是指不间断的数据结构,你可以把它想象成排水管道中的水流,当应用程序采用TCP发送消息时,虽然可以保证发送数据的顺序,但还是犹如没有任何间隔的数据流发送给接收端。
例如:在发送端应用程序中发送了10次100字节的消息,那么在接收端,应用程序可能会收到一个1000字节连续不断的数据,因此在TCP通信中,发送端应用可以在自己所要发送的消息中设置一个表示长度或间隔的字段信息。
TCP为提供可靠性传输,实行“顺序控制”,“重发控制”,“流量控制”,“拥塞控制”机制。
UDP是不具有可靠性的数据报协议,细微的处理它会交给上层的应用去完成。在UDP的情况下,虽然可以确保发送消息的大小,却不能保证消息一定会到达。因此,应用有时会根据自己的需要进行重发处理。
TCP用于在传输层有必要实现可靠传输的情况。由于它是面向有连接并具备顺序控制,重发控制等机制,所有他可以为应用提供可靠传输。而在另一方面,UDP主要用于那些对高速传输和实时性有较高要求的通信或广播通信。
套接字(Socket):
应用在使用TCP或UDP时,会用到操作系统提供的类库,这种类库一般被称为API。
使用TCP或UDP通信时,又会广泛使用到套接字(socket)的API,套接字原来是BSD Unix开发的,但是后来被移植到Windows的WinSock以及嵌入式操作系统中,应用程序利用套接字,可以设置对端的IP地址,端口号并实现数据的发送与接收。
数据链路和IP中的地址,分别指的是MAC地址和IP地址,前者用来识别同一链路中的不同的计算机,后者用来识别TCP/IP网络中互连的主机和路由器,在传输层中也有这种类似于地址的概念,那就是端口号。端口号用来识别同一台计算机中进行通信的不同应用程序,因此,它也被称为程序地址。
TCP/IP或UDP/IP通信中通常采用5个信息来识别一个通信,它们是“源IP地址”,“目标IP地址”,“协议号”,“源端口号”,“目标端口号”,只要其中某一项不同,则被认为是其他通信。
端口号如何确定:
1. 标准既定的端口号
2. 时序分配法
端口号由其使用的传输层协议决定,因此,不同的传输协议可以使用相同的端口号。例如,TCP与UDP使用同一个端口号,但是目的各不相同。这是因为端口号上的处理是根据每个传输协议的不同而进行的。
数据到达IP层后,会先检查IP首部中的协议号,再传给想要协议的模块。如果是TCP则传递给TCP模块,如果是UDP则传递给UDP模块去做端口号的处理。即使是同一个端口号,由于传输协议是各自独立进行处理,因此相互之间不会受到影响。
UDP不提供复杂的控制机制,利用IP提供面向无连接的通信服务。并且它是将应用程序发来的数据在接收到的那一刻,立即按照原样发送到网络的一种机制。
由于UDP面向无连接。它可以随时发送数据,再加上UDP本身的处理既简单又高效,因此经常用于以下几个方面:
1. 包总量较少的通信(DNS,SNMP等)
2. 视频,音频等多媒体通信(即时通信)
3. 限定于LAN等特定网络中的应用通信
4. 广播通信(广播,多播)
TCP与UDP的区别相当大,它充分地实现了数据传输时各种控制功能。可以进行丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。而这些在UDP中都没有,此外,TCP作为一种面向有连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。
TCP负责控制连接的建立,断开,保持等管理工作。
可以使用TCP首部用于控制的字段来管理TCP连接,建立一个TCP连接需要发送3个包,断开一个TCP连接需要发送4个包。
在建立TCP连接的同时,也可以确定发送数据的单位。我们也可以称其为“最大消息长度”(MSS,Maximum Segment Size)。最理想的情况是,最大消息长度正好是IP中不会被分片处理的最大数据长度。
TCP在传送大量数据时,是以MSS的大小将数据进行分割发送,进行重发时也是以MSS为单位。
TCP的功能:
1. 顺序控制
2. 重发控制
3. 流量控制
4. 拥塞控制
路由器根据路由控制表转发数据包。它根据所收到的数据包中目标主机的IP与路由控制表的比较得到下一个应该接收的路由器。
路由控制分为静态和动态两种类型。静态路由是指事先设置好路由器和主机并将路由信息固定的一种方法,而动态路由是指路由协议在运行过程中自动地设置路由控制信息的一种方法。
人们根据路由控制的范围常使用IGP(Interior Gateway Protocol)和EGP(Exterior Gateway Protocol) 。
自治系统内部动态路由采用的协议是域内路由协议,即IGP。而自治系统之间的路由控制是域间路由协议,即EGP。
路由协议大致分成两类:一类是外部网关协议EGP,另一类是内部网关协议IGP。
可以根据EGP在区域网络之间(或ISP之间)进行路由选择,也可以根据IGP在区域网络内部(或ISP内部)进行主机识别。
路由协议被分成EGP和IGP两个层次。没有EGP就不可能有世界上各个不同组织机构之间的通信。没有IGP机构内部也就不可能进行通信。
IGP中还可以使用RIP(Routing Information Protocol,路由信息协议),RIP2,OSPF(Open Shortest Path First,开放最短路径优先)等众多协议,与之相比,EGP使用的是BGP(Border Gateway Protocol,边界网关协议)协议。
路由控制有各种各样的算法,其中最具有代表性的有两种,是距离向量(Distance-Vector)算法和链路状态(Link-State)算法。
距离向量算法是指根据距离和方向来决定目标网络和目标主机位置的一种方法。
路由器之间可以互换目标网络的方向及其距离的相关信息,并以这些信息为基础制作路由控制表。这种处理方法比较简单,不过由于只有距离和方向的信息,所以当网络构造变得复杂时,在获得稳定的路由信息之前需要消耗一定时间,也极易发生路由循环的问题。
链路状态算法是路由器在了解网络整体连接状态的基础上生成路由控制表的一种方法,该方法中每个路由器必须保持将同样的信息才能进行正确的路由选择。
TCP/IP的应用层涵盖了OSI参考模型中第5,6,7层的所有功能,不仅包含了管理通信连接的会话层功能,转换数据格式的表示层功能,还包括与对端主机交互的应用层功能在内的所有功能。
shell是操作系统提供给用户的,便于使用该操作系统中各种功能的一种用户接口,它可以解释用户从键盘或鼠标输入的内容,并让操作系统执行,Unix的sh,csh,bash和Windows中的Expore以及Mac Os中的Finder都属于同一范畴。
SSH:secure shell ,加密的远程登录系统