什么是计算机网络?
是指将地理位置不同的具有独立功能的多台计算机及外部设备,借助于某种网络介质连接起来,实现资源共享和信息传递的计算机系统
计算机网络的特点?
1、能实现数据信息的快速传输和集中处理 2、可共享计算机系统资源 3、提高了计算机的可靠性及可用性 4、能均衡负载互相协作
常见的网络应用程序
Web 浏览器(Chrome、IE、Firefox等) 即时消息(QQ、微信、钉钉等) 电子邮件(Outlook、foxmail 等) 协作(视频会议、VNC、Netmeeting、WebEx 等) web网络服务(apache,nginx,IIS) 文件网络服务(ftp,nfs,samba) 数据库服务(MySQL,MariaDB, MongoDB) 中间件服务(Tomcat,JBoss) 安全服务(Netfilter)
使用协议分层网络模型
为了减少网络设计的复杂性,绝大多数网络采用分层设计方法。所谓分层设计方法,就是按照信息的流动过程将网络的整体功能分解为一个个的功能层,不同机器上的同等功能层之间采用相同的协议,同一机器上的相邻功能层之间通过接口进行信息传递
使用分层网络模型的特点
1.降低复杂性 2.标准化接口 3.简化模块设计 4.确保技术的互操作性 5.加快发展速度 6.简化教学
OSI七层模型
应用层:应用程序的进程 表示层:数据的格式,是否压缩,加密等 会话层:建立断开会话 传输层:决定了数据的可靠性,有TCP和UDP协议,也包含了源端口和目的端口 网络层:到达不同网络之间路径的最佳选择,路由数据包 数据链路层:物理地址寻址,错误校验,数据帧封装等 物理层:将上层所封装的数据转换为二进制通过物理介质传输到目的地
数据封装与解封装过程
三种通信模式
单播:一对一 组播:一对多 广播:一对所有
网络传输介质,RJ-45接口
T568A线序:白绿、绿、白橙、蓝、白蓝、橙、白棕、棕 T568B线序:白橙、橙、白绿、蓝、白蓝、绿、白棕、棕 相同设备用交叉,不同设备用直通,PC和路由器除外
以太网数据帧结构
前导码(preamble):7字节,用于同步 帧开始符(SFD):1字节,标明下一个字节为目的MAC字段 目的MAC地址:6字节,指明此以太网帧的接收者 源MAC地址:6字节,指明此帧的发送者 长度(length):2字节,帧的数据字段的长度 类型(Type):2字节,帧中数据的协议类型 数据(Data):46~1500字节,所要发送的数据内容长度 帧校验序列(FCS):4字节,判断帧在传输过程中是否被修改过,如果发现错误,则丢弃此帧
MAC地址
MAC:Media Address Control或称为物理地址、硬件地址,用来定义网络设备的位置。在OSI模型中,第三层网络层负责 IP地址,第二层数据链路层则负责 MAC地址。因此一个主机会有一个MAC地址,而每个网络位置会有一个专属于它的IP地址。 长度为48bits,使用16进制表示,分为前24位和后24位 前24位叫做组织唯一标志符、是由IEEE的注册管理机构给不同厂家分配的代码,区分了不同的厂家。 后24位是由厂家自己分配的,称为扩展标识符。同一个厂家生产的网卡中MAC地址后24位是不同的。 MAC地址第8位如果为0,则表示单播MAC地址,如果为1,则表示组播MAC地址
以太网交换机工作原理
当PC1要和PC2通信时,源MAC地址为PC1,目的MAC地址为PC2,数据帧到达交换机的f0/1口,交换机查看MAC地址表是否有PC1的相关条目,如果没有,则学习源MAC,将源MAC地址与之对应的端口号添加至MAC地址表当中,目的MAC也没有相关条目,则广播,PC2和PC3都收到了数据,由于数据的目的地是PC2,所以PC3收到数据则直接丢弃,PC2收到数据,则回应,此时源MAC为PC2,目的MAC为PC1,数据到达交换机的f0/2接口,交换机查看MAC地址表中是否有PC2相关条目,没有,则学习源MAC地址,将MAC与之对应的端口号添加至MAC地址表,目的MAC为PC1,此时,MAC地址表中已经有PC1的MAC地址所对应的端口号,直接将数据发送至f0/1端口即可。 由于交换机MAC地址表当中已经有PC1与PC2的源MAC与端口对应关系,下次通信直接单播即可。
路由
路由:把一个数据包从一个设备发送到不同网络里的另一个设备上去。这些工作依靠路由器来完成。路由器只关心网络的状态和决定网络中的最佳路径。路由的实现依靠路由器中的路由表来完成 路由器工作在网络层,路由器在转发数据包的过程中源IP与目的IP不会发生变化,而源MAC于目的MAC会发生改变
TCP/IP协议栈
Transmission Control Protocol /Internet Protocol 传输控制协议/因特网互联协议 TCP/IP是一个Protocol Stack,包括TCP、IP、UDP、ICMP、RIP、TELNET、FTP、SMTP、ARP等许多协议 最早发源于美国国防部(缩写为DoD)的因特网的前身ARPA网项目,1983年1月1日,TCP/IP取代了旧的网络控制协议NCP,成为今天的互联网和局域网的基石和标准。由互联网工程任务组负责维护。 共定义了四层 和ISO参考模型的分层有对应关系
TCP/IP 协议栈和OSI 模型
TCP包头
TCP首部一共20个字节 源端口和目的端口:各占2个字节,上层的应用数据,标识计算机上的进程 序号:占4个字节,是本报文段所发送的数据项目组第一个字节的序号,在TCP传送的数据流中,每个字节都有一个序号,例如,以报文段的序号为300,而其数据共100字节,则下一个报文段的序号就是300 确认序号:占4字节,是期望收到对方下次发送的数据的第一个字节的序号,也就是期望收到下一个报文首部中的序号 首部长度:因为选项是不定长的,这就需要标识整个首部字段的长度(单位是32位字),即5+选项个数。4位,单位是32位字,所以首部最长是15*4=60字节,即选项最长是40字节(10个选项)。 6个控制位: URG:当URG=1时,其后的紧急指针指示紧急数据在当前数据段中的位置(相对于当前序列号的字节偏移量),TCP接收方必须通知上层实体。 ACK:当ACK=0时,表示该数据段不包含确认信息,当ACK=1时,表示该报文段包括一个对已被成功接收报文段的确认。 PSH:当PSH=1时,接收方在收到数据后立即将数据交给上层,而不是直到整个缓冲区满。 RST:用于重置一个已经混乱的连接(如主崩溃),也可用于拒绝一个无效的数据段或者拒绝一个连接请求。一般而言,如果你得到的数据段被设置了RST位,那说明你这一端有问题了。 SYN:用于建立连接过程,在连接请求中,SYN=1和ACK=0表示该数据段没有使用捎带的确认域,而连接应答捎带一个确认,即SYN=1和ACK=1。 FIN:用于释放一个连接,表示发送方已经没有数据要传输了。此时,接收方可能继续接收数据,好在SYN和FIN数据段都有序列号,从而保证了这两种数据段以正确顺序被处理。 窗口大小:用于流控制(确保连接的任何一方都不会过快地发送过量的分组而淹没另一方),窗口大小指定了从被确认的字节算起可以发送多少个字节。 校验和:提供了额外可靠性,在计算检验和的时候,TCP的Checksum域设为0,如果数据域的字节数为奇数,则数据域填补一个额外的0字节。校验和算法:将所有的16位字按1的补码形式累加起来,取累加结果的补码。因此,当接收方执行同样计算时(包括Checksum域),结果应该是0。 紧急指针:参考标志字段的URG位。 选项:选项部分是为了适合复杂网络环境和更好地服务于应用层设计的。TCP选项最长是40字节 数据:无任何数据的TCP段也是合法的,通常用于确认和控制信息。
TCP三次握手
第一次握手:建立连接。客户端发送连接请求报文段,将SYN位置为1,Sequence Number为x;然后,客户端进入SYN_SEND状态,等待服务器的确认; 第二次握手:服务器收到SYN报文段。服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认,设置Acknowledgment Number为x+1(Sequence Number+1);同时,自己自己还要发送SYN请求信息,将SYN位置为1,Sequence Number为y;服务器端将上述所有信息放到一个报文段(即SYN+ACK报文段)中,一并发送给客户端,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK报文段。然后将Acknowledgment Number设置为y+1,向服务器发送ACK报文段,这个报文段发送完毕以后,客户端和服务器端都进入ESTABLISHED状态,完成TCP三次握手。
TCP四次挥手
第一次挥手:主机1(可以使客户端,也可以是服务器端),设置Sequence Number和Acknowledgment Number,向主机2发送一个FIN报文段;此时,主机1进入FIN_WAIT_1状态;这表示主机1没有数据要发送给主机2了; 第二次挥手:主机2收到了主机1发送的FIN报文段,向主机1回一个ACK报文段,Acknowledgment Number为Sequence Number加1;主机1进入FIN_WAIT_2状态;主机2告诉主机1,我“同意”你的关闭请求; 第三次挥手:主机2向主机1发送FIN报文段,请求关闭连接,同时主机2进入LAST_ACK状态; 第四次挥手:主机1收到主机2发送的FIN报文段,向主机2发送ACK报文段,然后主机1进入TIME_WAIT状态;主机2收到主机1的ACK报文段以后,就关闭连接;此时,主机1等待2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,主机1也可以关闭连接了。
UDP报文格式
源、目标端口号字段:占16比特。作用与TCP数据段中的端口号字段相同,用来标识源端和目标端的应用进程。 长度字段:占16比特。标明UDP头部和UDP数据的总长度字节。 校验和字段:占16比特。用来对UDP头部和UDP数据进行校验。和TCP不同的是,对UDP来说,此字段是可选项,而TCP数据段中的校验和字段是必须有的。
ARP协议
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等
IP包头格式
版本号(Version):长度4比特。标识目前采用的IP协议的版本号。一般的值为0100(IPv4),0110(IPv6) IP包头长度:4字节,用于表示32位的IP包头 服务类型:数据包的优先级 IP包总长(Total Length):长度16比特。 以字节为单位计算的IP包的长度 (包括头部和数据),所以IP包最大长度65535字节。 标识符(Identifier):长度16比特。该字段和Flags和Fragment Offest字段联合使用,对较大的上层数据包进行分段(fragment)操作。路由器将一个包拆分后,所有拆分开的小包被标记相同的值,以便目的端设备能够区分哪个包属于被拆分开的包的一部分。 标记(Flags):长度3比特。该字段第一位不使用。第二位是DF(Don't Fragment)位,DF位设为1时表明路由器不能对该上层数据包分段。如果一个上层数据包无法在不分段的情况下进行转发,则路由器会丢弃该上层数据包并返回一个错误信息。第三位是MF(More Fragments)位,当路由器对一个上层数据包分段,则路由器会在除了最后一个分段的IP包的包头中将MF位设为1。 片偏移(Fragment Offset):长度13比特。表示该IP包在该组分片包中位置,接收端靠此来组装还原IP包。 生存时间(TTL):长度8比特。当IP包进行传送时,先会对该字段赋予某个特定的值。当IP包经过每一个沿途的路由器的时候,每个沿途的路由器会将IP包的TTL值减少1。如果TTL减少为0,则该IP包会被丢弃。这个字段可以防止由于路由环路而导致IP包在网络中不停被转发。 协议(Protocol):长度8比特。标识了上层所使用的协议。 头部校验(Header Checksum):长度16位。用来做IP头部的正确性检测,但不包含数据部分。 因为每个路由器要改变TTL的值,所以路由器会为每个通过的数据包重新计算这个值。 起源和目标地址(Source and Destination Addresses):这两个地段都是32比特。标识了这个IP包的起源和目标地址。要注意除非使用NAT,否则整个传输的过程中,这两个地址不会改变。 可选项(Options):这是一个可变长的字段
IP地址
InterneProtocol,互联网协议地址,是IP协议提供的一种统一的地址格式,及为计算机网络相互连接进行网络通信而设计的协议,为互联网上每个网络以及每个主机分配一个逻辑地址,以此来完成网络通信 IP地址的组成 IP地址的组成:网络位---主机位 IPv4地址:32bits 8bits.8bits.8bits.8bits 0.0.0.0---255.255.255.255 IPv4地址分类: A类: 第一段位网络位,后三段为主机位 网络号: 00000000--01111111:1-127 网络数量:126,127 每个网络中的主机数量:2^24-2 默认子网掩码:255.0.0.0 用于与IP地址按位进行"与"运算,从而取出网络地址 1.1.1.1/255.0.0.0 = 1.0.0.0 私网地址:10.0.0.0/255.0.0.0 B类: 前两段为网络位,后两段为主机位 网络号: 10000000 - 10111111:128-191 网络数量:2^14 每个网络中的主机数量:2^16-2 默认子网掩码:255.255.0.0 私网地址范围:172.16.0.0/16 -- 172.31.0.0/16 C类: 前三段为网络号,最后一段为主机位 网络号: 11000000 - 11011111:192-223 网络数量:2^21 每个网络中的主机数量:2^8-2 默认子网掩码:255.255.255.0 私网地址范围:192.168.0.0/16 -- 192.168.255.255/16 D类: 组播地址:224-239 E类: 科研
公共IP地址范围
A类: 1.0.0.0到9.255.255.255 11.0.0.0到126.255.255.255 B类: 128.0.0.0到172.15.255.255 172.32.0.0到191.255.255.255 C类: 192.0.0.0到192.167.255.255 192.169.0.0到223.255.255.255
私有地址范围
A类: 10.0.0.0到10.255.255.255 B类: 172.16.0.0到172.31.255.255 C类: 192.168.0.0到192.168.255.255
特殊地址
0.0.0.0 不是一个真正意义上的IP地址。它表示一个集合:所有不清楚的主机和目的网络。 255.255.255.255 限制广播地址。对本机来说,这个地址指本网段内(同一广播域)的所有主机 127.0.0.1~127.255.255.254 本机回环地址,主要用于测试。在传输介质上永远不应该出现目的地址为“127.0.0.1”的数据包。 224.0.0.0到239.255.255.255 组播地址,224.0.0.1特指所有主机,224.0.0.2特指所有路由器。224.0.0.5指OSPF 路由器,地址多用于一些特定的程序以及多媒体程序 169.254.x.x 如果Windows主机使用了DHCP自动分配IP地址,而又无法从DHCP服务器获取地址,系统会为主机分配这样地址。
原创文章,作者:zhai796898,如若转载,请注明出处:http://www.178linux.com/44148