我是靠谱客的博主 无情树叶,最近开发中收集的这篇文章主要介绍【网络】网络基础知识总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

谈到网络,首先就需要知道计算机网络中的两个参考模型,即OSI参考模型TCP/IP参考模型

OSI参考模型

OSI(Open System Interconnect),即开放式系统互联。 一般都叫OSI参考模型,是ISO组织在1985年研究的网络互连模型。该体系结构标准定义了网络互连的七层框架(物理层、数据链路层、网络层、运输层、会话层、表示层和应用层),即ISO开放系统互联参考模型。在这一框架下进一步详细规定了每一层的功能,以实现开放系统环境中的互连性、互操作性和应用的可移植性。

具体的分布如下图所示:



OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主机实现数据传输 。完成中继功能的节点通常称为中继系统。


TCP/IP模型

TCP/IP参考模型是计算机网络的祖父ARPANET和其后继的因特网使用的参考模型。ARPANET是由美国国防部DoD(U.S.Department of Defense)赞助的研究网络。逐渐地它通过租用的电话线连结了数百所大学和政府部门。当无线网络和卫星出现以后,现有的协议在和它们相连的时候出现了问题,所以需要一种新的参考体系结构。这个体系结构在它的两个主要协议出现以后,被称为TCP/IP参考模型(TCP/IP reference model)。

具体分层情况如下图:


可以看出,TCP并不像OSI模型那样将网络层次划分的那样细致,因此在实用性方面TCP/IP就显得尤为重要,而在学习过程中,主要需要掌握的也是基于TCP/IP这种网络参考模型,要搞清楚整个计算机网络中体系中做了什么事情,需要对每一层都进行仔细的研究。

1、物理层

基本数据传输单元:比特流。

主要设备:常见的有网卡、集线器中继器、调制解调器等

主要功能:实现比特流的透明传输,实现相邻计算机节点之间比特流的透明传输,尽可能屏蔽掉具体传输介质与物理设备的差异。使其上面的数据链路层不必考虑网络的具体传输介质是什么。

2、数据链路层

基本数据传输单元:帧

主要设备网桥交换机

主要功能:主要负责建立和管理节点间的链路通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路

3、网络层

基本数据传输单元:分组

主要设备路由器

主要功能:该层控制数据链路层与物理层之间的信息转发,建立、维持与终止网络的连接,通过路由算法,为报文或分组通过通信子网选择最适当的路径。具体的说,数据链路层的数据在这一层被转换为数据包,然后通过路径选择、分段组合、顺序、进/出路由等控制,将信息从一个网络设备传送到另一个网络设备。

主要协议:网际协议(IP)、互联网组管理协议(IGMP)和互联网控制报文协议(ICMP)。

4、传输层

传输层的基本数据传输单元为数据段,下三层的主要任务是数据传输,上三层的主要任务是数据处理。而传输层是第四层,因此该层是通信子网和资源子网的接口和桥梁,起到承上启下的作用

主要功能向用户提供可靠的、端到端的差错和流量控制,保证报文的正确传输。

主要协议:传输控制协议(TCP)和用户数据报协议(UDP).

5、应用层

应用层是计算机用户,以及各种应用程序和网络之间的接口

主要任务直接向用户提供服务,完成用户希望在网络上完成的各种工作。它在其他6层工作的基础上,负责完成网络中应用程序与网络操作系统之间的联系,建立与结束使用者之间的联系,并完成网络用户提出的各种网络服务及应用所需的监督、管理和服务等各种协议。此外,该层还负责协调各个应用程序间的工作。

主要服务和协议:文件服务、目录服务、文件传输服务(FTP)、远程登录服务(Telnet)、电子邮件服务(E-mail)、打印服务、安全服务、网络管理服务、数据库服务等。

常考面试题

(1)交换机和路由器有什么区别?

说起来也很简单交换机是在物理层主要负责的在同一个局域网之中进行信息传递,而路由器主要解决的是不同局域网之间进行数据通信的时的信息交互设备,交换机拥有一条很高带宽的背部总线和内部交换矩阵。交换机的所有的端口都挂接在这条总线上,控制电路收到数据包以后,处理端口会查找内存中的地址对照表以确定目的MAC(网卡的硬件地址)的NIC(网卡)挂接在哪个端口上,通过内部交换矩阵迅速将数据包传送到目的端口,目的MAC若不存在则广播到所有的端口,接收端口回应后交换机会“学习”新的地址,并把它添加入内部MAC地址表中。

使用交换机也可以把网络“分段”,通过对照MAC地址表,交换机只允许必要的网络流量通过交换机。通过交换机的过滤和转发,可以有效的隔离广播风暴,减少误包和错包的出现,避免共享冲突。

(2)集线器与路由器在功能上有什么不同?

集线器的作用可以简单的理解为将一些机器连接起来组成一个局域网。而交换机(又名交换式集线器)作用与集线器大体相同。但是两者在性能上有区别:集线器采用的是共享宽带方式,而交换机是独享带宽。这样在机器很多或数据量很大时,两者将会有比较明显的。而路由器与以上两者有明显区别,它的作用在于连接不同的网段并且找到网络中数据传输最合适的路径。路由器是产生于交换机之后,就像交换机产生于集线器之后,所以路由器与交换机也有一定联系,不是完全独立的两种设备。路由器主要克服了交换机不能路由转发数据包的不足。

两种模型比较

相同点:

(1)都采用了分层的思想对进行划分;

(2)本质上都是按照主要的功能进行划分

(3)都提供了面向连接和无连接的

不同点:

(1)OSI采用的是7层模型,TCP/IP采用的是4层模型;

(2)OSI的抽象程度更高,适合描述网络的各种复杂层次,而TCP/IP是先有协议,然后才建立的模型,因此实用性更高;

(3)OSI层次划分清晰,概念过于复杂,TCP/IP接口、服务和协议之间划分并不清晰,功能描述和实现细节区分不清;

(4)TCP/IP的网络接口层并不是真正的一层,OSI层次太多含糊不清,导致整个模型变的复杂;

(5)OSI分层复杂不利于实现,而TCP/IP虽然协议划分不像OSI那样清晰,但在实用性方面还是取得了很大的成功。

图示比较:  


            

TCP/IP协议栈与数据包封装

具体的通信过程如下图所示:


数据从一台主机通过一定的路径发送到另外一台主机上时,每层的协议栈上面都要加上相应的该层协议的报头,对有效数据包进行封装,具体的TCP/IP数据包封装过程如下图所示:


上面所描述的情况都是在同一个局域网之中两台主机进行信息交互,如果在不同的局域网之间进行数据交互,就不得不使用我们在上面介绍的关于不同局域网之间进行通信的设备路由器,由此可知在不同的局域网之间进行信息交互,需要经过一个或者多个路由器才能完成信息的交互,下面以经过一台路由器的情况为例,如下图所示:


ARP与RARP协议

ARP协议

ARP协议即地址解析协议,当在一直IP地址时用来求MAC地址的一个TCP/IP协议,主机发送信息时将包含目的IP地址的信息按照广播的形式发送出去,并接收返回的信息已确定目的MAC地址,收到的目的MAC地址会先保存一段时间,下次请求时可以直接从保存的ARP列表中获取。

目的:在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址,而数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃。因此在通讯前必须获得目的主机的硬件地址,ARP协议就起到这个作用。

每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址。

ARP数据报格式:


例如:A主机(源地址)向B主机(目的地址)进行ARP请求,A的MAC为:00:05:5d:61:58:a8;A的IP地址:c0 a8 00 37(192.168.0.55)。

B的MAC为:00:05:5d:a1:b8:40;B的IP地址:c0 a8 00 02(192.168.0.2).

请求帧为

以太网首部(14字节) ff ff ff ff ff 00 05 5d 61 58 a8 08 06//广播地址的目标地址是全1。08 06:ARP帧

APR帧(28字节)

00 01 //硬件类型表示为以太网;硬件地址(MAC地址)长度为6,协议地址(IP地址)长度为4(0604)

08 0006 0400 0100 05 5d 61 58 a8c0 a8 00 37//协议类型0800表示为IP地址;op为0x0001表示请求;

00 00 00 00 00 00c0 a8 00 02//此处目的以太网地址为全0,IP地址为B的。A主机ARP的目的就是获得B主机硬件地址(MAC地址/物理地址)。

填充位(18字节)

应答帧为:

以太网首部 (字节) 00 05 5d 61 58 a8 00 05 5d a1 b8 40 08 06

APR帧(28字节)

00 01

08 0006 0400 0200 05 5d a1 b8 40c0 a8 00 02 //op为0x0002表示应答;

00 05 5d 61 58 a8c0 a8 00 37//目的以太网地址和IP地址为A的

填充位(18字节)


RARP协议

RARP称为地址逆解析协议,它的过程正好和ARP相反,允许局域网的物理机器从网关服务器的ARP表或者缓存上请求其IP地址。网络管理员在局域网网关路由器里创建一个表以映射物理地址(MAC)和与其对应的IP地址。当设置一台新的机器时,其RARP客户机程序需要向路由器上的 RARP 服务器请求相应的IP地址。假设在路由表中已经设置了一个记录,RARP 服务器将会返回 IP 地址给机器,此机器就会存储起来以便日后使用。

RARP数据报格式


工作方式:RARP以与ARP相反的方式工作。RARP发出要反向解析的物理地址并希望返回其对应的IP地址,应答包括由能够提供所需信息的RARP服务器发出的IP地址。虽然发送方发出的是广播信息,RARP规定只有RARP服务器能产生应答。许多网络指定多个RARP服务器,这样做既是为了平衡负载也是为了作为出现问题时的备份。


IP数据报格式


各字段详细解析:

版本(Version)字段:占4比特。用来表明IP协议实现的版本号,当前一般为IPv4,即0100。  
报头长度(Internet Header Length,IHL)字段:占4比特。是头部占32比特的数字,包括可选项。普通IP数据报(没有任何选项),该字段的值是5,即160比特=20字节。此字段最大值为60字节。  
服务类型(Type of Service ,TOS)字段:占8比特。其中前3比特为优先权子字段(Precedence,现已被忽略)。第8比特保留未用。第4至第7比特分别代表延迟、吞吐量、可靠性和花费。当它们取值为1时分别代表要求最小时延、最大吞吐量、最高可靠性和最小费用。这4比特的服务类型中只能置其中1比特为1。可以全为0,若全为0则表示一般服务。服务类型字段声明了数据报被网络系统传输时可以被怎样处理。例如:TELNET协议可能要求有最小的延迟,FTP协议(数据)可能要求有最大吞吐量,SNMP协议可能要求有最高可靠性,NNTP(Network News Transfer Protocol,网络新闻传输协议)可能要求最小费用,而ICMP协议可能无特殊要求(4比特全为0)。实际上,大部分主机会忽略这个字段,但一些动态路由协议如OSPF(Open Shortest Path First Protocol)、IS-IS(Intermediate System to Intermediate System Protocol)可以根据这些字段的值进行路由决策。  
总长度字段:占16比特。指明整个数据报的长度(以字节为单位)。最大长度为65535字节。  
标志字段:占16比特。用来唯一地标识主机发送的每一份数据报。通常每发一份报文,它的值会加1。  
标志位字段:占3比特。标志一份数据报是否要求分段。  
段偏移字段:占13比特。如果一份数据报要求分段的话,此字段指明该段偏移距原始数据报开始的位置。  
生存期(TTL:Time to Live)字段:占8比特。用来设置数据报最多可以经过的路由器数。由发送数据的源主机设置,通常为32、64、128等。每经过一个路由器,其值减1,直到0时该数据报被丢弃。  
协议字段:占8比特。指明IP层所封装的上层协议类型,如ICMP(1)、IGMP(2) 、TCP(6)、UDP(17)等。  
头部校验和字段:占16比特。内容是根据IP头部计算得到的校验和码。计算方法是:对头部中每个16比特进行二进制反码求和。(和ICMP、IGMP、TCP、UDP不同,IP不对头部后的数据进行校验)。  
源IP地址、目标IP地址字段:各占32比特。用来标明发送IP数据报文的源主机地址和接收IP报文的目标主机地址。  
可选项字段:占32比特。用来定义一些任选项:如记录路径、时间戳等。这些选项很少被使用,同时并不是所有主机和路由器都支持这些选项。可选项字段的长度必须是32比特的整数倍,如果不足,必须填充0以达到此长度要求。 

IP如何分片:

1)、检查DF标志位,检查是否允许分片。如果设置了该位,则数据报将被丢弃,并将一个ICMP错误返回给源主机。

2)、基于MTU,确定片长度,将数据长度分为若干部分。(除了最后的数据部分,所有新建的数据选项的长度必须是8个字节的整数倍。)

3)、每个数据部分被放入一个IP数据报,这些数的数据报的报头略微修改了原来的报文头。

4)、除了最后的数据报分片外,每个分片都设置了多个分片标志位。

5)、每个分片的偏移量字段设置为这个数据部分在原来的数据报所占的位置,这个位置相当于原来未分片的数据报的开头处。

6)、如果在原来的数据报中包括了选项,则选项类型字节的高位字节决定了这个信息是被复制到所有的分片数据段,还是只复制到了第一个数据报。

7)、设置新数据报的报文头字段及总长度字段。

8)、重新计算报文头部校验和。

IP的组装:

为了高效第组装分片,用于保存分片的数据结构必须做到:

1)、快速定位属于某一数据报的一组分组。

2)、在属于某一数据报的一组分片中快速插入新的分片。

3)、有效地判断一个数据报的所有分片是否已经全部接收。

4)、具有组装超时机制,如果在重组完成之前定时器溢出,则删除该数据报的所有内容。


代理服务器与NAT技术辨析

http://blog.csdn.net/double_happiness/article/details/73929931


IP地址与路由


IP地址与子网掩码做与运算可以得到网络号,主机号从全0到全1就是子网的地址范围

127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1。loopback是系统中一种特殊的网络设备,如果发送数据包的目的地址是环回地址或者与本机其它网络设备的IP地址相同,则数据包不会发送到网络介质上,而是通过环回设备再发回给上层协议和应用程序,主要用于测试。

一些不能用作主机IP 地址的特殊地址:

目的地址为255.255.255.255 ,表示本网络内部广播,路由器不转发这样的广播数据包。

主机号全为0的地址只表示网络而不能表示某个主机,如192.168.10.0(假设子网掩码 为255.255.255.0)。
目的地址的主机号为全1,表示广播至某个网络的所有主机,例如目的地址192.168.10.255表示广播至192.168.10.0网络(假设子网掩码为255.255.255.0)。


路由表:由很多路由条目组成,每个条目都指明去往某个网络的数据包应该经由哪个接口发送,其中最后一条是缺省路由条目。路由条目路由表中的一行,每个条目主要由目的网络地址、子网掩码、下一跳地址、发送接口四部分组成,如果要发送的数据包的目的网络地址匹配路由表中的某一行,就按规定的接口发送到下一跳地址。缺省路由条目路由表中的最后一行,主要由下一跳地址和发送接口两部分组成,当目的地址与路由表中其它行都不匹配时,就按缺省路由条目规定的接口发送到下一跳地址。

路由是从寻找目标网络开始的,对于路由来说其找寻目标网络地址一般有三种可能:

1、知道,但当前网段找不到(送至下一路由);2、不知道,也找不到。(送至默认网关);3、知道,也能在当前网段找到。

路由如何确定要发送的网络号?

IP数据报中存有目标IP地址,所以当路由获得该地址时,通过与子网掩码的“与”操作,便能得到一个网络号,将其与路由表中的目标地址(Destination)条目进行逐一比对,如果比对成功则通过该网络号对应的发送接口(Use Iface)发出;若未匹配到,则说明不在该局域网络,须将其从eth0的发送接口发出,将其送至默认网关处,再由其路由表决定下一跳的地址。


UDP数据报头


各字段详细解释

源、目标端口号字段:占16比特。作用与TCP数据段中的端口号字段相同,用来标识源端和目标端的应用进程。  
长度字段:占16比特。标明UDP头部和UDP数据的总长度字节。  
校验和字段:占16比特。用来对UDP头部和UDP数据进行校验。和TCP不同的是,对UDP来说,此字段是可选项,而TCP数据段中的校验和字段是必须有的。 

UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层的传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天UDP仍然不失为一项非常实用和可行的网络传输层协议。

UDP协议不面向连接,也不保证传输的可靠性。例如:发送端的UDP协议层只管把应用层传来的数据封装成段交给IP协议层就算完成任务了,如果因为网络故障该段无法发到对方,UDP协议层也不会给应用层返回任何错误信息。接收端的UDP协议层只管把收到的数据根据端口号交给相应的应用程序就算完成任务了,如果发送端发来多个数据包并且在网络上经过不同的路由,到达接收端时顺序已经错乱了,UDP协议层也不保证按发送时的顺序交给应用层。通常接收端的UDP协议层将收到的数据放在一个固定大小的缓冲区中等待应用程序来提取和处理,如果应用程序提取和处理的速度很慢,而发送端发送的速度很快,就会丢失数据包,UDP协议层并不报告这种错误。因此,使用UDP协议的应用程序必须考虑到这些可能的问题并实现适当的解决方案,例如等待应答、超时重发、为数据包编号、流量控制等。一般使用

UDP协议的应用程序实现都比较简单,只是发送一些对可靠性要求不高的消息,而不发送大量的数据。例如,基于UDP的TFTP协议一般只用 trivial ftp TCP FTP于传送小文件,而基于TCP的协议适用于各种文件的传输。

UDP协议的特点:UDP使用底层的互联网协议来传送报文,同IP一样提供不可靠的无连接数据包传输服务。它不提供报文到达确认、排序、及流量控制等功能

CRC差错校验


TCP数据报头


各字段详细解释

源、目标端口号字段:占16比特。TCP协议通过使用"端口"来标识源端和目标端的应用进程。端口号可以使用0到65535之间的任何数字。在收到服务请求时,操作系统动态地为客户端的应用程序分配端口号。在服务器端,每种服务在"众所周知的端口"(Well-Know Port)为用户提供服务。
顺序号字段:占32比特。用来标识从TCP源端向TCP目标端发送的数据字节流,它表示在这个报文段中的第一个数据字节。  

确认号字段:占32比特。只有ACK标志为1时,确认号字段才有效。它包含目标端所期望收到源端的下一个数据字节。  
头部长度字段:占4比特。给出头部占32比特的数目。没有任何选项字段的TCP头部长度为20字节;最多可以有60字节的TCP头部。  
标志位字段(U、A、P、R、S、F):占6比特。各比特的含义如下:  
URG:紧急指针(urgent pointer)有效。  
ACK:确认序号有效。  
PSH:接收方应该尽快将这个报文段交给应用层。  
RST:重建连接。  
SYN:发起一个连接。  
FIN:释放一个连接。  
窗口大小字段:占16比特。此字段用来进行流量控制。单位为字节数,这个值是本机期望一次接收的字节数。  
TCP校验和字段:占16比特。对整个TCP报文段,即TCP头部和TCP数据进行校验和计算,并由目标端进行验证。  
紧急指针字段:占16比特。它是一个偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。  
选项字段:占32比特。可能包括"窗口扩大因子"、"时间戳"等选项。

1)、应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分区成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传输单元(MTU)的限制)。

2)、TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。

3)、接收端实体对已成功收到的包发回一个相应的确认(ACK)。如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据包就被假设为已丢失将会被进行重传。TCP用一个校验和函数来检验数据是否有错误,在发送和接收时都要计算校验和。

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内另一个重要的传输协议。在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。

TCP/IP三次握手,四次挥手及原因

http://blog.csdn.net/double_happiness/article/details/70160738

最后

以上就是无情树叶为你收集整理的【网络】网络基础知识总结的全部内容,希望文章能够帮你解决【网络】网络基础知识总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部