网络基础概念

一.IP地址

    IP地址是因特网上的每个网络节点在全球范围内的唯一标识符,对每个节点来说,IP地址是一个32位的二进制代码,如11111111111111111111111111111111。为了提高可读性,我们常常把32位IP地址中的每8位转换为对应的十进制,并在两个十进制数之间插入一个点,即255.255.255.255,这种记法就是常用的点分十进制记法。

       IP地址的编址经历了三个历史阶段,分类的IP地址、子网的划分以及构成超网。

1.1分类的IP地址

       分类的IP地址中是将IP划分为几种固定的类,每一类地址都有两个固定长度的字段组成--网络号和主机号。网络号是标志网络节点所连接到的网络,主机号标志该节点。IP地址主要分为5大类,A类、B类和C类都是单播地址,即一对一通信,最常用。D类地址用于多播,即一对多通信。E类地址保留为以后用。如图可见这几类IP:

 

        A类地址规定网络号字段为1字节,第一位固定为0来标识该类别,只有7位可供使用,有=126个可指派的网络号。其中有2个特殊的网络号,一个是网络号字段为全0,它是保留地址,意思是“本网络”,如0.0.0.35代表“在这个网络上主机号为35的主机”;另一个是127字段,保留用于环回测试,例,常见的127.0.0.1代表本地主机。所以A类地址的网络号范围为1~126。主机号3字节,最大主机数为,这里也要减去2。一个是主机号全0,表示网络的地址,如,一主机IP为5.6.7.8,则该主机所在的网络地址就是5.0.0.0。另一个是全1,表示该网络内的所有主机,如,125.255.255.255代表了125.0.0.0这个网络上的所有主机。

       B类地址网络号字段为2字节,前两位固定为10,有14位可用来分配,有个可指派的网络号。这里减1的原因是一般128.0.0.0是不指派的,B类可指派的网络地址是128.1.0.0。

       C类地址网络号字段为3字节,前3位固定为110,有21为可用来分配。

      由上我们可以简单看出,整个IP地址空间共有个地址,A类地址有个,占有整个IP地址空间的50%,B类占有25%,C类占有12.5%。

1.2划分子网

       上一节中介绍的分类的IP地址是二级IP地址,是由网络号和主机号组成的,而现在常用的是三级IP地址,添加了一个子网号。二级的IP不够灵活且造成了浪费。如,我们办公室假如有300台电脑,使用C类地址,最多可接入=256台主机,显然不够,若使用B类地址,则可接入=65536台主机,造成了极大的浪费。此时,我们可以申请一个B类的网络,如网络地址为172.16.0.0,同时可以把这65536个地址划分成一个个局域网,相互之间互不干扰,划分过的局域网可以称为这个B类网络的一个个子网,而相对于本单位外的网络仍然表现为一个网络。网络号是需要申请和指派的,它一般是固定的,所以想要进行子网的划分,划分的方法是将二级IP的主机号字段借用若干位来表示子网号,这样就变成了三级IP地址:网络号、子网号和主机号。记为:

   IP地址::={<网络号>,<子网号>,<主机号>}

        但一个数据报到达公司的路由器后,路由器并不知道该发给哪个子网,因为子网号并不一定存在,就算存在位数也并不是固定的,所以此时就需要子网掩码。

       子网掩码这个概念主要为了确定IP地址的网络号,这里所说的网络号不再是二级IP中的网络号,而是指的是三级IP地址中网络号和子网号两者的总和。这样,总的来说子网掩码将三级IP地址分成了两部分,即网络号和主机号(注意这里的网络号和主机号与二级IP的网络号和主机号的异同)。

       我们知道二进制中任何数逐位与1进行“与”操作后还是本身,和0进行“与”操作后都是0。其实一个子网掩码的实质是指定了一个IP地址中网络号的长度,如一IP地址为01110110.10110110.11010101.00101011,子网掩码是11111111.11100000.00000000.00000000,它的前11位就设置为1,后21位设置为0,IP地址和子网掩码进行“与”操作后,该IP地址的前11位就保留了下来,后21位就变为了全0,即01110110.10100000.00000000.00000000。

       如果一个网络不划分子网,那么该网络的子网掩码使用默认子网掩码,这种默认子网掩码其实就三个。即A类地址的默认子网掩码,255.0.0.0,B类地址的默认子网掩码255.255.0.0,C类地址的默认子网掩码255.255.255.0。

       顺便说一下,有一种IP表示方法,如192.168.1.0/24,它指的是IP地址是192.168.1.0,子网掩码中1的个数是24个,即255.255.255.0,很容易看出这个就是一个C类的网络。再如,我们办公室网络中有172.16.0.X和172.16.1.X这两种IP,简单分析,172即B类地址,默认网络号是16位,即172.16,但只出现过0.X和1.X的IP说明第三个八位中前七位应该是固定的,只有最后一位在0和1之间变化,所以我们办公室网络的网络号应该是23位,子网掩码是255.255.254.0。

二.网关

       网关是一个网段的出入口。一个网络想要和这个网络外的网络进行通信,必须通过网关。如我们要登录百度页面,主机发现数据包的目的主机不在本地网络中,就把数据包转发给自己的网关,再由网关转发给百度的网关,百度的网关再转发给百度中的某个服务器上,这样,百度就收到了我们的登录请求,它就把数据包传给我们,百度的网关要先找到我们本地的网关,网关收到数据包后再转发给我们。

        一个网段是可以没有网关,也可以没有DHCP服务器,即设置为静态IP,由交换机、集线器等连接设备就可相互访问。但没有网关就意味着只能在这个局域网内互相访问,不能访问局域网外的任何网络。很多局域网中都采用了路由来接入网络,路由器的WAN口连接到外部网络上,LAN口IP设置为网关。网关的地址可以是局域网段内主机地址的任意一个,不一定是设置为192.168.1.0,它只是用来标识网关。

三.几种常用网络设备

3.1中继器

       信号在双绞线中传输的过程中信号的功率会逐渐衰减,当信号衰减到一定程度时将造成信号失真,所以为了方便较远距离的两计算机进行通信,就在这两个计算机之间安装一个中继器,让信号能传的更远。中继器的作用就是整理已经衰减的信号,重新产生完整的信号再继续传送。中继器工作在物理层,只是起到了扩展传输距离的作用,对高层是透明的。

3.2集线器

       集线器实际上就是一种多端口的中继器,一般有4、8、16、24、32等数量的接口。如一台集线器有8个接口,连接了8台计算机,那集线器就位于这8台计算机的“中心”,每台计算机想与其他计算机进行通信时,计算机首先要将数据包通过双绞线送到集线器上,而集线器是用广播的方式将包同时发给8个端口,8个端口的计算机收到广播信息后对信息进行检查,是发给自己的就接收,不是的话就不理睬。正是因为广播的这种机制,我们将我们自己的电脑连在集线器上,才能抓到ucm和话机等进行通信的数据包。同样,集线器也是工作在物理层。

 

3.3网桥

       网桥是早期的两端口的二层网络设备,网桥像是一个聪明的中继器,如前所说,中继器只是简单的连接了两个网络,任何数据都可以通过中继器发出,但网桥有所不同。网桥除了扩展网络的距离或范围,还能提高网络的性能和安全性。

 

       网桥可以连接两个网络,网桥A端口连接A子网,B端口连接B子网。网桥中有一个信息表,我们可以把这个信息表看作两部分,一部分记录了A子网中设备的MAC地址,另一部分记录了B子网中的MAC地址,当A发出一个包,网桥可以查看目的地址到底是A中的还是B中的,若是A中的就不进行转发,是B中的才进行转发。所以网桥与中继器不同的是隔离了两个子网,而不是任意的转发,拥有了学习功能。

3.4交换机

       网桥只有两个端口,有着局限,所以为了实现多对多通信,产生了交换机。集线器同样也是多对多通信,但集线器是广播的方式将数据包发到目的主机上,交换机却不一样,交换机与网桥一样具有学习功能。

 

       交换机也有一个表,它记录着每个端口对应的主机的MAC地址。当交换机收到数据包后,可以解析出该数据包目的地址的MAC地址。然后根据该MAC地址将包转发到对应的端口去。

       交换机有很多的类型,我们常说的交换机一般指的是传统的交换机,它工作在二层。但随着交换机的发展,出现了三层交换机,它除了拥有二层交换机的交换技术外,还在三层实现了数据包的高速转发及路由功能。

3.5路由器

       子网划分中我们介绍到经常将一个网络划分成一个个的子网,每个子网拥有不同的网段。二层交换机只能实现连在它上面的同一个网段的主机之间的通信,如果是不同的网段就算连在同一个交换机上仍相互不能进行通信。而路由器就可以实现不同网段之间的通信,它是一种连接多个网络或网段的设备,能将不同网络或网段之间的数据进行“翻译”,并可以识别出一个数据包应该转发到哪个网络中。

 

       路由器中一般有个路由表来实现学习和翻译的功能。如图,我们UCM在作为路由器时的路由表,记录了目的地、网关、子网掩码和接口等。如路由表中的第二条代表的意思是:如果目的地是172.16.0.0网段,那就把数据包转发到eth1端口上去。第一条是默认路由,就是如果目的地不在这个路由表中,那就走这条默认路由。

3.6调制解调器

       还有一种家中常用的设备,那就是调制解调器,也就是俗称的“猫”。我们都知道,网线中一般传输的数字信号,0和1,而电话线中传输的是模拟信号,这两种信号并不能直接进行通信,就需要调制解调器进行“翻译”。

网络中的OSI七层协议和TCP/IP协议

1.OSI七层网络模型浅析

当然,我们不是专业搞网络工程的,只要知道有哪些层,大概是拿来干嘛的就可以了!

OSI七层网络模型(从下往上)

  • 物理层(Physical):设备之间的数据通信提供传输媒体及互连设备,为数据传输提供可靠的 环境。可以理解为网络传输的物理媒体部分,比如网卡,网线,集线器,中继器,调制解调器等! 在这一层,数据还没有被组织,仅作为原始的位流或电气电压处理,这一层的单位是:bit比特
  • 数据链路层(Datalink):可以理解为数据通道,主要功能是如何在不可靠的物理线路上进行 数据的可靠传递,改层作用包括:物理地址寻址,数据的成帧,流量控制,数据检错以及重发等! 另外这个数据链路指的是:物理层要为终端设备间的数据通信提供传输媒体及其连接。媒体是 长期的,连接是有生存期的。在连接生存期内,收发两端可以进行不等的一次或多次数据通信。 每次通信都要经过建立通信联络和拆除通信联络两过程!这种建立起来的数据收发关系~ 该层的设备有:网卡,网桥,网路交换机,另外该层的单位为:
  • 网络层(Network):主要功能是将网络地址翻译成对应的物理地址,并决定如何将数据从发 送方路由到接收方,所谓的路由与寻径:一台终端可能需要与多台终端通信,这样就产生的了 把任意两台终端设备数据链接起来的问题!简单点说就是:建立网络连接和为上层提供服务! 该层的设备有:路由!该层的单位为:数据包,另外IP协议就在这一层!
  • 传输层(Transport):向上面的应用层提供通信服务,面向通信部分的最高层,同时也是 用户功能中的最低层。接收会话层数据,在必要时将数据进行分割,并将这些数据交给网络 层,并且保证这些数据段有效的到达对端!所以这层的单位是:数据段;而这层有两个很重要 的协议就是:TCP传输控制协议UDP用户数据报协议,这也是本章节核心讲解的部分!
  • 会话层(Session):负责在网络中的两节点之间建立、维持和终止通信。建立通信链接, 保持会话过程通信链接的畅通,同步两个节点之间的对话,决定通信是否被中断以及通信中断时 决定从何处重新发送,即不同机器上的用户之间会话的建立及管理!
  • 表示层(Presentation):对来自应用层的命令和数据进行解释,对各种语法赋予相应 的含义,并按照一定的格式传送给会话层。其主要功能是"处理用户信息的表示问题,如编码、 数据格式转换和加密解密,压缩解压缩"等
  • 应用层(Application):OSI参考模型的最高层,为用户的应用程序提供网络服务。 它在其他6层工作的基础上,负责完成网络中应用程序与网络操作系统之间的联系,建立与结束使用者之间的联系,并完成网络用户提出的各种网络服务及应用所需的监督、管理和服务等各种协议。此外,该层还负责协调各个应用程序间的工作。应用层为用户提供的服务和协议有:文件服务、目录服务、文件传输服务(FTP)、远程登录服务(Telnet)、电子邮件服务(E-mail)、打印服务、安全服务、网络管理服务、数据库服务等。

好的上面我们浅述了OSI七层网络模型,下面总结下:

OSI是一个理想的模型,一般的网络系统只涉及其中的几层,在七层模型中,每一层都提供一个特殊 的网络功能,从网络功能角度观察:

  • 下面4层(物理层、数据链路层、网络层和传输层)主要提供数据传输和交换功能, 即以节点到节点之间的通信为主
  • 第4层作为上下两部分的桥梁,是整个网络体系结构中最关键的部分;
  • 上3层(会话层、表示层和应用层)则以提供用户与应用程序之间的信息和数据处理功能为主。

简言之,下4层主要完成通信子网的功能,上3层主要完成资源子网的功能。

——以上内容参考自:OSI七层模型详解

 

2.TCP/IP四层模型

TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。 TCP/IP协议簇分为四层,IP位于协议簇的第二层(对应OSI的第三层),TCP位于协议簇的第三层 (对应OSI的第四层)。TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供 的网络来完成自己的需求。这4层分别为:

  • 应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、 网络远程访问协议(Telnet)等。
  • 传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、 用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中, 这一层负责传送数据,并且确定数据已被送达并接收。
  • 网络互连层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目 的主机(但不检查是否被正确接收),如网际协议(IP)。
  • 主机到网络层:对实际的网络媒体的管理,定义如何使用实际网络 (如Ethernet、Serial Line等)来传送数据。

3.TCP/UDP区别讲解

好吧,前两点侃侃而谈,只是给大家普及下OSI七层模型和TCP/IP四层模型的概念,接下来要讲的是 和我们Socket开发相关的一些概念名词了!

1)IP地址

2)端口

1. 用于区分不同的应用程序

2. 端口号的范围为0-65535,其中0-1023未系统的保留端口,我们的程序尽可能别使用这些端口!

3. IP地址和端口号组成了我们的Socket,Socket是网络运行程序间双向通信链路的终结点, 是TCP和UDP的基础!

4. 常用协议使用的端口:HTTP:80,FTP:21,TELNET:23

3)TCP协议与UDP协议的比较:

TCP协议流程详解:

首先TCP/IP是一个协议簇,里面包括很多协议的。UDP只是其中的一个。之所以命名为TCP/IP协议, 因为TCP,IP协议是两个很重要的协议,就用他两命名了。

下面我们来讲解TCP协议和UDP协议的区别:

TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,即在收发数据钱 ,都需要与对面建立可靠的链接,这也是面试经常会问到的TCP的三次握手以及TCP的四次挥手! 三次握手: 建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立, 在Socket编程中,这一过程由客户端执行connect来触发,具体流程图如下:

  • 第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server, Client进入SYN_SENT状态,等待Server确认。
  • 第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位 SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求 ,Server进入SYN_RCVD状态。
  • 第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK 置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则 连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以 开始传输数据了。

四次挥手: 终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。 在Socket编程中,这一过程由客户端或服务端任一方执行close来触发,具体流程图如下:

  • 第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入 FIN_WAIT_1状态
  • 第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同, 一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
  • 第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK 状态。
  • 第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。 另外也可能是同事发起主动关闭的情况:

另外还可能有一个常见的问题就是:为什么建立连接是三次握手,而关闭连接却是四次挥手呢? 答:因为服务端在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里 发送给客户端。而关闭连接时,当收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还 能接收数据,己方也未必全部数据都发送给对方了,所以己方可以立即close,也可以发送一些 数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会 分开发送。


UDP协议详解

UDP(User Datagram Protocol)用户数据报协议,非连接的协议,传输数据之前源端和终端不 建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。 在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽 的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。 相比TCP就是无需建立链接,结构简单,无法保证正确性,容易丢包

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值