网络编程基础

网络基础知识

 一些常见术语的基本概念

网络分类

按照网络的作用范围分类,我们可以将其分为局域网、城域网、广域网3类。

    a) 局域网(Local Area Network,简称LAN)

    局域网通常都是私有的,用于连接一个办公室、建筑物或者校园内的设备,通常范围设定在千米以内。通常情况下一个局域网只会采用一种拓扑结构。

    b) 广域网(Wide Area Network,简称WAN)

    广域网常常横跨多个国家、地区或大洲,所覆盖的范围通常到几千千米,并且被多个机构所拥有。广域网通常利用电信部门提供的分组交换网、卫星通信信道和无线分组交换网,将分布在多个地区的计算机系统互联起来,达到资源共享的目的。
 

网络通信概述
从进程间通信说起:网络域套接字socket,网络通信其实就是位于网络中不同主机上面的2个进程之间的通信。

网络通信的层次
(1)硬件部分:网卡
(2)操作系统底层:网卡驱动
(3)操作系统API:socket接口
(4)应用层:低级(直接基于socket接口编程)
(5)应用层:高级(基于网络通信应用框架库)
(6)应用层:更高级(http、网络控件等)

例如下图就简单的描述了网络通信的层次:

网卡
(1)计算机上网必备硬件设备,CPU靠网卡来连接外部网络
(2)串转并设备
(3)数据帧封包和拆包
(4)网络数据缓存和速率适配


集线器(HUB)
(1)信号中继放大,相当于中继器
(2)组成局域网络,用广播方式工作。
(3)注意集线器是不能用来连接外网的


交换机
(1)包含集线器功能,但更高级
(2)交换机中有地址表,数据包查表后直达目的通信口而不是广播
(3)找不到目的口时广播并学习

路由器
(1)路由器是局域网和外部网络通信的出入口
(2)路由器将整个internet划分成一个个的局域网,却又互相联通。
(3)路由器对内管理子网(局域网),可以在路由器中设置子网的网段,设置有线端口的IP地址,设置dhcp功能等,因此局域网的IP地址是路由器决定的。
(4)路由器对外实现联网,联网方式取决于外部网络(如ADSL拨号上网、宽带帐号、局域网等)。这时候路由器又相当于是更高层级网络的其中一个节点而已。
(5)所以路由器相当于有2个网卡,一个对内做网关、一个对外做节点。
(6)路由器的主要功能是为经过路由器的每个数据包寻找一条最佳路径(路由)并转发出去。其实就是局域网内电脑要发到外网的数据包,和外网回复给局域网内电脑的数据包。
(7)路由器技术是网络中最重要技术,决定了网络的稳定性和速度。


DNS(Domain Name Service 域名服务)
(1)网络世界的门牌号:IP地址
(2)IP地址的缺点:难记、不直观
(3)IP地址的替代品:域名,譬如www.zhulaoshi.org
(4)DNS服务器就是专门提供域名和IP地址之间的转换的服务的,因此域名要购买的
(5)我们访问一个网站的流程是:先使用IP地址(譬如谷歌的DNS服务器IP地址为8.8.8.8)访问DNS服务器(DNS服务器不能是域名,只能是直接的IP地址),查询我们要访问的域名的IP地址,然后再使用该IP地址访问我们真正要访问的网站。这个过程被浏览器封装屏蔽,其中使用的就是DNS协议。
(6)浏览器需要DNS服务,而QQ这样的客户端却不需要(因为QQ软件编程时已经知道了腾讯的服务器的IP地址,因此可以直接IP方式访问服务器)
 


IP地址分类(IPv4)


(1)IP地址实际是一个32位二进制构成,在网络通信数据包中就是32位二进制,而在人机交互中使用点分十进制方式显示 既:0.0.0.0 ~ 255.255.255.255 每一个十进制代表8位二进制。
(2)IP地址中32位实际包含2部分,分别为:网络地址和主机地址。(哪些位表示网络地址是由子网掩码决定的)

子网掩码,用来说明网络地址和主机地址各自占多少位。

要想判断两个ip地址是不是在同一个网段,只需将ip地址与子网掩码做与运算,如果得出的结果一样,则这两个ip地址是同一个子网当中。
(3)由网络地址和主机地址分别占多少位的不同,将IP地址分为5类,最常用的有3类

例如:子网掩码为 255.255.255.0  既前24位数代表网络地址 后8位数代表主机地址


三类IP地址
(1)A类。
(2)B类
(3)C类
(4)127.0.0.0用来做回环测试loopback(就是网卡自己发自己收 进行测试)

对于A类地址来说,默认的子网掩码是255.0.0.0;对于B类地址来说默认的子网掩码是255.255.0.0;对于C类地址来说默认的子网掩码是255.255.255.0。

注意:并不是说所有的子网掩码都是255.0.0.0   255.255.0.0     255.255.255.0


如何判断2个IP地址是否在同一子网内
(1)网络标识 = IP地址 & 子网掩码
(2)2个IP地址的网络标识一样,那么就处于同一网络。

源IP地址:发出数据包的网络的IP地址
目标IP地址:要接收数据包的计算机的IP地址


二进制方式            0xffffffff            0xC0A80166/0x6601A8C0        本质
点分十进制方式        255.255.255.255        192.168.1.102                方便人看的

IP地址 = 网络地址 + 主机地址
网络地址用来表示子网
主机地址是用来表示子网中的具体某一台主机的。


譬如可以8位表示网络,24位表示主机
也可以16位表示网络,16位表示主机
14为表示网络,18位表示主机

子网掩码为255.255.255.0时表示前24位为网络地址,后8位为主机地址
子网掩码为255.255.0.0时表示前16位为网络地址,后16位为主机地址

网络地址决定了这种网络中一定可以有多少个网络,譬如子网掩码为255.255.255.0时表示我们这一种网络一共最多可以有2^24个,每个这种网络中可以有2^8个主机。
如果子网掩码为255.255.0.0时,表示我们这种网络可以有2^16个网络,每个这种网络中最多可以有2^16个主机。


192.168.1.102 & 255.255.255.0 = 192.168.1.0
192.168.1.253 & 255.255.255.0 = 192.168.1.0


192.168.1.4和192.168.12.5,如果子网掩码是255.255.255.0那么不在同一网段,如果子网掩码是255.255.0.0那么就在同一个网段

什么是子网掩码?
子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。说的通俗的话,就是用来分割子网和区分那些ip是同一个网段的,那些不是同一网段的。

1.1:如下两个IP地址:
ip地址:192.168.1.1 子网掩码:255.255.255.0

ip地址:192.168.1.2 子网掩码:255.255.255.0

可以直接判断他们两是统一网段

1.2:如下两个IP地址:
ip地址:192.168.1.1 子网掩码:255.255.255.0

ip地址:192.168.1.2 子网掩码:255.255.0.0

这两个ip地址虽然在不看掩码的情况下,比较像,但他们并不是同一个网段内的。

这个可以从子网掩码来判断,

192.168.1.1 255.255.255.0是属于192.168.1.0网段的。

而192.168.1.2 255.255.0.0是属于192.168.0.0网段。

2:如何根据掩码来辨别两个IP是否属于同一网段?
2.1:如何确定子网掩码和判断ip地址的网段
通常我们在划分vlan的时候会使用以下例子:

例1:

创建vlan1:ip地址:192.168.1.1 子网掩码:255.255.255.0

创建vlan2:  ip地址: 192.168.2.1 子网掩码:255.255.255.0

可以直观的判断,他们并不是属于同一个网段,那么如何计算呢?要想判断两个ip地址是不是在同一个网段,只需将ip地址与子网掩码做与运算,如果得出的结果一样,则这两个ip地址是同一个子网当中。
 


子网掩码和网络掩码

网络掩码和子网掩码区别?_KRYON!的博客-CSDN博客_网络掩码和子网掩码的区别网络掩码和子网掩码是同一个东西?我是看这个的时候发现还有网络掩码这个概念一开始以为是同一个概念(虽然确实差不多)下面是回答:https://superuser.com/questions/315352/what-is-the-difference-between-a-subnet-mask-and-a-netmask...https://blog.csdn.net/qq_40691051/article/details/105352245


DHCP(dynamic host configuration protocl,动态主机配置协议)
(1)每台计算机都需要一个IP地址,且局域网内各电脑IP地址不能重复,否则会地址冲突。
(2)计算机的IP地址可以静态设定,也可以动态分配
(3)动态分配是局域网内的DHCP服务器来协调的,很多设备都能提供DHCP功能,譬如路由器。
(4)动态分配的优势:方便接入和断开、有限的IP地址得到充分利用



NAT(network address translation,网络地址转换协议)

内网IP转外网IP
(1)IP地址分为公网IP(internet范围内唯一的IP地址)和私网IP(内网IP),局域网内的电脑使用的都是私网IP(常用的就是192.168.1.xx)
(2)网络通信的数据包中包含有目的地址的IP地址
(3)当局域网中的主机要发送数据包给外网时,路由器要负责将数据包头中的局域网主机的内网IP替换为当前局域网的对外外网IP。这个过程就叫NAT。
(4)NAT的作用是缓解IPv4的IP地址不够用问题,但只是类似于打补丁的形式,最终的解决方案还是要靠IPv6。
(5)NAT穿透简介


内网IP和外网IP

内网ip和外网ip区别_回家养老-CSDN博客_内网ip和外网ip区别文章一:原文:https://blog.csdn.net/Alexwym/article/details/81772446我们每天都会访问各种各样的网站,比如淘宝,百度等等。不免会思考,我们的设备是如何连接上这些网址的呢?要想搞清楚这个问题,首先就得先搞清楚内网ip和外网ip的联系。如图,假设我们的计算机现在就是设备一,我们想要访问百度。如果我们正使用着校园网,那么首先我们需要先通...https://blog.csdn.net/weixin_42724467/article/details/89147214

1.公网ip具有世界范围的唯一性,而内网ip只在局域网内部具有唯一性。并且,一个局域网里所有电脑的内网IP是互不相同的,但共用一个外网IP。就像我们前面所说的你所在学校的校名在整个世界上只有一个,但是你学校里面的A栋大楼3层3号教室只有在你的校园内部才具有唯一性。别的学校也有A栋大楼3层3号教室。你只能跟快递小哥说请帮我把包裹送到xx大学,而不能说请帮我把包裹送到A栋大楼3层3号教室。

2.在局域网中,每台电脑都可以自己分配自己的IP,但是这个IP只在局域网中有效。而如果你将电脑连接到互联网,你的网络提供商的服务器会为你分配一个IP地址,这个IP地址才是你在外网的IP。两个IP同时存在,一个对内,一个对外。

3.互联网上的IP(即外网IP)地址统一由一个叫“IANA”(InternetAssigned NumbersAuthority,互联网网络号分配机构)的组织来管理。由于分配不合理以及IPv4协议本身存在的局限,现在互联网的IP地址资源越来越紧张。IANA将A、B、C类IP地址的一部分保留下来,留作局域网使用。具体如下
IP地址空间:
     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

也就是说,如果你查到的ip地址在以上A、B、C类IP地址的范围内,它一定就是局域网的ip地址,否则就是公网的地址。

4.实际生活中不仅有一级NET技术,还有二级NET技术。也就是可能你的校园网关也只是个局域网。通过多级转换可以得到更多的地址。

什么是广域网(WAN、公网、外网),什么是局域网(LAN、私网、内网)?
广域网(WAN),就是我们通常所说的Internet,它是一个遍及全世界的网络。
局域网(LAN),相对于广域网(WAN)而言,主要是指在小范围内的计算机互联网络。这个“小范围”可以是一个家庭,一所学校,一家公司,或者是一个政府部门。
BT中常常提到的公网、外网,即广域网(WAN);BT中常常提到私网、内网,即局域网(LAN)。

广域网上的每一台电脑(或其他网络设备)都有一个或多个广域网IP地址(或者说公网、外网IP地址),广域网IP地址一般要到ISP处交费之后才能申请到,广域网IP地址不能重复;局域网(LAN)上的每一台电脑(或其他网络设备)都有一个或多个局域网IP地址(或者说私网、内网IP地址),局域网IP地址是局域网内部分配的,不同局域网的IP地址可以重复,不会相互影响。

广域网(WAN、公网、外网)与局域网(LAN、私网、内网)电脑交换数据要通过路由器或网关的NAT(网络地址转换)进行。一般说来,局域网(LAN、私网、内网)内电脑发起的对外连接请求,路由器或网关都不会加以阻拦,但来自广域网对局域网内电脑电脑连接的请求,路由器或网关在绝大多数情况下都会进行拦截。

通常情况下,网关或路由器对内部向外发出的信息不会进行拦截,但对来自外部想进入内部网络的信息则会进行识别、筛选,认为是安全的、有效的,才会转发给内网电脑。正是这种情况的存在,才导致了很多内网用户没有“远程”,速度也不尽如人意。


什么是网关?

什么是网关及网关作用_bestcleaner-CSDN博客_网关作用网关https://blog.csdn.net/bestcleaner/article/details/71374621


MAC地址


网络中传输的地址其实是MAC地址

MAC地址 的意义及作用_一个人的力量很渺小,一群人的力量很可怕......-CSDN博客_mac地址的作用什么是 MAC Address  MAC地址就是在媒体接入层上使用的地址,也叫物理地址、硬件地址或链路地址,由网络设备制造商生产时写在硬件内部。MAC地址与网络无关,也即无论将带有这个地址的硬件(如网卡、集线器、路由器等)接入到网络的何处,都有相同的MAC地址,它由厂商写在网卡的BIOS里。MAC地址可采用6字节(48比特)或2字节(16比特)这两种中的任意一种。但随着局域网规模越来越https://blog.csdn.net/fzf151/article/details/7573405


广播、组播和单播

广播、组播和单播是网络通信中常用的三种数据传输方式:

  1. 单播(Unicast):单播是指一对一的数据传输方式,即数据从一个发送者发送到一个接收者。在单播中,发送者和接收者之间需要建立一条独立的通信链路,数据只能被一个接收者接收。

  2. 广播(Broadcast):广播是指一对多的数据传输方式,即数据从一个发送者发送到所有的接收者。在广播中,发送者不需要知道接收者的地址,数据会被传输到所有的网络节点中,所有节点都会接收到这份数据。
    值得注意的是:使用广播传输数据 指定的数据接收方的IP地址 必须是xxx.xxx.xxx.255
                               指定的数据接收方MAC地址必须是全为1 也就是ff:ff: ff: ff:ff:ff
    广播传输的数据可以通过网络节点中的所有主机的数据链路层和网络层(原因在于指定的IP地址和MAC地址);但是无法通过所有的传输层 这是因为进行数据传输需要指定MAC地址、IP地址、端口号。所以虽然通过广播可以实现让当前网络节点中的所有主机在数据链路层和网络层接收到数据,但是无法让所有的主机都在传输层接收到数据,只有主机中存在一个端口,和数据发送方在传输时指定的端口号相同 才能在传输层接收到数据。
    举个例子:主机1 mac地址:xx:xx:xx:xx:xx:xx IP地址:191.168.1.xxx 端口号2
                      主机2 mac地址:xx:xx:xx:xx:xx:xx IP地址:191.168.1.xxx 端口号3
                      主机3 mac地址:xx:xx:xx:xx:xx:xx IP地址:191.168.1.xxx 端口号200
    此时数据发送方指定的 mac地址:ff:ff: ff: ff:ff:ff IP地址:191.168.1.255 端口号200
    就代表进行了广播 数据到达了主机1、2、3的数据链路层和网络层,但是由于指定的端口号为200,所以只有主机3在传输层接收到了数据

  3. 组播(Multicast):组播是指一对多的数据传输方式,但是相比于广播,组播只会将数据传输到指定的一组接收者。在组播中,发送者需要知道接收者的组地址,数据只会被传输到这个组中的所有接收者。

总之,单播、广播和组播是网络通信中常用的三种数据传输方式,每种方式都有其优缺点,根据不同的需求选择不同的方式可以提高网络通信的效率和可靠性。

 传输层协议中只有UDP可以广播和组播


字节序

字节序指的是计算机中多字节整型数据的存储格式,通常有大端序和小端序两种。

//大端序与小端序的名称来源于《格利佛游记》,主人公在小人国时发现该国因为水煮蛋该从大端(Big-End)剥开还是小端(Little-End)剥开分为两派而引发激烈的战争。1980年,Danny Cohen在自己的论文中第一次引用了该两个词。

    大端序(Big-Endian):高地址存储数据低位,低地址存储数据高位

    小端序(Little-Endian):高地址存储数据高位,低地址存储数据低位

通常情况下,网络通信中使用大端序传输数据,而操作系统内通常使用小端序存储数据。

由于在网络通信中,发送方和接收方可能使用不同的字节序,因此为了保证数据的正确性,二者在通信前必须统一字节序。


组网方式

1.网络互联:使用集线器将少量主机连在一起

在这里插入图片描述

2.局域网(LAN):使用交换机和路由器将主机连接,可以自由组合三种方式

组网方式:

        <1>.交换机

        <2>.路由器

        <3>.交换机+路由器

在这里插入图片描述

3.广域网(WAN):广域网和局域网知识相对的概念

例如:一个学校之间的网络就可以成为局域网,而一个国家,多个国家之间可以称为广域网,覆盖的区域不同在这里插入图片描述

组网方式:公网上,网络结点组成,每一个结点可以是:

在这里插入图片描述

二、计算机网络的拓扑结构

    网络拓扑结构(Topology),指的是网络中各个结点的互连方式,也就是网络链路与结点的几何布局,它描述了各个结点间的物理与逻辑位置。

常见的基本网络拓扑结构有5种:

    网状(Mesh)

    星状(Star)

    树状(Tree)

    总线型(Bus)

    环状(Ring)

1、网状拓扑

    在网状拓扑内,每一个设备与其他的设备都会有一条专线连接。

相较于其他拓扑结构,网状拓扑有以下优点:

    -设备之间数据负载由专线承担,避免共享链路中网络拥堵问题

    -良好的健壮性。当其中某个线路不可用时,整个网络不会瘫痪

    -隐私性和安全性高。每个消息都是专线传输,只有唯一的发送方与接收方

    -故障检测与故障隔离十分容易。

当然,网状拓扑也有其缺点:

    -需要的网络连接电缆数量过大。具有N个设备的网状结构需要N*(N-1)/2条物理通道,每个设备需要N-1个输入/输出端口

2、星状拓扑

    在星状拓扑中,每个设备与中央控制器相连。如果一个设备要向另一个设备发送数据,则需要先将数据发送到中央控制器,再由中央控制器将数据转发给对应设备。

相较于其他拓扑结构,星状拓扑有以下优点:

    -拓扑结构简单。每个设备只需一条电缆和一个输入/输出端口即可与其他设备建立连接

    -具有良好的健壮性。如果一条链路失效,只有连接该链路的设备受影响,其余设备不会被影响

    -便于管理,故障检测与故障隔离很容易。

当然,星状拓扑也有其缺点:

    -中央控制器是整个网络的瓶颈。如果中央控制器出现故障则整个网络会瘫痪。同时,中央控制器吞吐数据的速率也直接影响整个网络的速率。

3、树状拓扑

    树状拓扑结构可以看做是星状拓扑结构的扩展。在树状拓扑结构中,绝大多数的设备首先连接在次级控制器上,再由次级控制器连接到中央控制器上。

树状拓扑结构的优点和缺点基本与星状拓扑结构类似。但次级控制器的引入带来了另外的优点:

    -允许更多设备相连并且增加了信号在设备间的传输距离

    -允许网络隔离不同计算机的通信,以及为不同的计算机配置通信优先级

4、总线型拓扑

    总线型拓扑是由一条长电缆组成的主干和连接在上面的网络设备组成。网络节点通过引出线和分接头连接到总线电缆上。

总线型拓扑有以下优点:

    -信息传输不存在路由与转发的问题

    -易安装,主干电缆可以铺设在最有效的路径上,然后将网络结点通过各种分支引出线连接到主干上

总线型拓扑具有以下缺点:

    -故障隔离和重新配置困难,加入或移除设备需要改动或者更新主干,总线的故障会终止所有传输

    -由于信号衰减,总线的长度和连接的设备数会受到限制

5、环状拓扑

    环状拓扑结构是网络中各个设备通过一条首尾相连的通信链路连接的一个闭合环形结构。每个设备只与其两侧的两个设备之间有专用链路连接。信号在环中从一个设备到另一个设备单向传输,直至到目的地为止。

 


OSI七层模型

传输层关注的是向位于不同主机(或有时候位于同一主机)上的应用程序提供端对端的通信服务

网络层关注的是如何将包(数据)从源主机发送到目标主机。

数据链路层关注的是在一个网络的物理链接上传输数据

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

  计算机网络由若干个相互连接的结点构成,这些结点之间要不断进行数据交换。要进行正确的数据传输,每个结点就必须遵循一些实现约定好的规则,这些规则就是网络协议。

网络协议是在主机与主机之间、主机与通信子网之间或通信子网中各通信结点之间通信时使用的、通信双方必须遵守的、实现约定好的规则、标准或约定。一个合格的网络协议主要有以下三个要素:

  •     -语法要求:即数据与控制信息的结构或格式。
  •     -语义要求:即需要发出何种控制信息、完成何种动作、做出何种响应等,同时需要规定差        错处理。
  •     -时序(同步)要求:即事件实现顺序的详细说明,包括速度匹配和顺序等。

当然,对于复杂的网络协议,其结构最好是层次式的。分层的协议有以下好处:

  •     -各结构间独立,一个层次无需知道它下面的层次如何实现,而仅仅通过层间提供的接口实现服务。
  •     -灵活性好。当某一层次发生变化,只要接口关系保持不变,其他层不会受到影响。
  •     -结构上可分隔开,各层可以采用最合适的技术实现。
  •     -易于实现和维护。分层结构使一个复杂的系统的实现和调试变得简单。
  •     -有利于标准化作业。各个层次的功能以及向其他层提供的服务都有精确说明。
     

在OSI参考模型中,有7个层次的体系结构

//需要注意的是,OSI仅是一个理想化的模型,尚未有完整的实现,但模型本身的指导意义非常通用

 1.物理层

    物理层规定在一个结点内如何把计算机连接到介质上。规定了机械的、电气的功能。该层负责建立、保持和拆除物理链路;规定如何在此链路上传送比特流;比特如何编码,使用的电平极性,连接插头插座的插脚如何配置等。物理层传送数据单位是比特(bit)。

 2.数据链路层

    数据链路层把相邻两个结点间不可靠的物理链路变成可靠无差错的逻辑链路。包括把原始比特流进行分帧、排序、设置检错、确认、重发、流量控制等功能。数据链路层传送数据单位是帧(frame),每帧包括一定数量的数据和一些必要的控制信息,在每帧的控制信息中,包括同步信息、地址信息、差错控制信息、流量控制信息等;同物理层相似,数据链路层负责建立、维护和释放数据链路。
 

 3.网络层

    网络层连接网络中任何两个计算机结点,从一个结点上接收数据,并正确地传送到另一个结点。在网络层,传送数据单位是分组或包( packet)。网络层的主要任务是要选择合适的路由和交换结点,透明地向目的站交付发送站所发的分组或包,这里的“透明”表示收发两端好像是直接连通的。另外,网络层还要解决网络互连、拥塞控制和记账等问题。
 

上述3层组成了所谓的通信子网,用户计算机连接到此子网上。通信子网负责把一个计算机上的数据可靠地传送到另一台计算机,但并未实现两台主机上的进程之间的通信。通信子网的主要功能是面向通信的。

 4.传输层

    传输层真正地实现了“端到端”通信,把数据可靠地从一方的用户进程或程序送到另一方的用户进程或程序。这一层的控制通常由通信两端的计算机完成,中间结点一般不提供这一层的服务,这一层的通信与通信子网无关。从这一层开始的以上各层全部是针对通信的最终的“源端-目的端”计算机进程的。传输层传送数据单位是报文(message)。

    传输层向上一层提供一个可靠的端到端的服务,使上一层看不见下面几层的通信细节。正因为如此,传输层成为网络体系结构中最关键的一层。传输层的功能主要在主机内实现。而物理层、数据链路层及网络层的功能均在报文接口机中实现。传输层以上各层的功能通常在主机中实现。
 

   5.会话层

    会话层允许两个计算机上的用户进程建立会话连接,双方相互确认身份,协商会话连接的细节。它可管理会话是双向同时进行的,还是任何时刻只能一个方向进行。在后一种情况下,会话层控制哪一方有权发送数据。会话层还提供同步点机制。在数据流中插入同步点机制,在每次网络出现故障后可以仅仅重传最近一个同步点以后的数据,而不必从头开始。

    传输层和会话层为两台计算机上的用户进程或程序之间提供了正确传送数据的手段。

    6.表示层

    表示层主要解决用户信息的语法表示问题。表示层将数据从适合于某一系统的语法转变为适合于OSI系统内部使用的语法。具体地讲,表示层对传送的用户数据进行翻译或解释、编码和变换,使不同类型的计算机对数据信息的不同表示方法可以相互理解。另外,数据加密、解密、信息压缩等都是本层的典型功能。

    7.应用层

    应用层确定进程之间通信的性质,以满足用户的需要。它负责用户信息的语义表示,并在两个通信者之间进行语义匹配。具体地说,应用层处理用户的数据和信息,由用户程序(应用程序)组成,完成用户所希望的实际任务。这一层包括最终用户普遍需要的协议,如虚拟终端协议、文件传送协议和电子邮件等。

总结:

1.对协议的简单理解:本质上是数据格式的定义。而知名的数据格式,大家普遍遵循的规定,就属于协议

2.OSI七层模型:一种网络分层的设计方法论,比较复杂且不实用,落地几乎都是TCP/IP四层,五层模型

在这里插入图片描述


 TCP/IP五层(四层)模型

1、TCP/IP网络体系结构简介

    OSI参考模型的制定具有十分重大的意义,但是由于TCP/IP协议使用时间较长,再加上简洁、实用而成为了实际上的工业标准。在实际运行的系统中采用OSI参考模型的并不多。

    TCP/IP(Transmission Control Protocol/Internet Protocol, 传输控制协议/网际协议)是世界上最大的计算机网络Internet的运行基础,是目前为止应用最广泛的网络通信协议,现在已称为企业网络的事实标准。大多数网络操作系统都以TCP/IP协议作为缺省网络协议。

    TCP/IP协议由5层构成:物理层、数据链路层、网络层、传输层和应用层,其中物理层和数据链路层有时也被合并称为“网络接口层”即称为TCP/IP四层协议。其中TCP/IP协议中的应用层大致等同于OSI参考模型的会话层、表示层和应用层的结合。

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

2、TCP/IP网络体系结构成员协议简介

TCP/IP是一个协议栈,包含了众多成员协议,从而构成一个整体。每一层的成员协议如下:

    1).TCP/IP的物理层和数据链路层(网络接口层)

    TCP/IP协议并未提供物理层和数据链路层的传输协议,其物理层和数据链路层的传输协议由底层提供,TCP/IP协议仅为其提供接口,并与其独立。正因如此,物理层与数据链路层有时也被合称为“网络接口层”。

  

    2).TCP/IP的网络层

    TCP/IP协议的网络层主要功能是寻址、数据打包和路由选择。网络层的主要协议有:

    ARP        地址解析协议。将IP地址解析为结点的物理地址,以便于物理设备(网卡)按该地址接收数据

    RARP      反向地址解析协议。将物理地址解析成为IP地址

    ICMP      Internet控制消息协议,用于传送差错报文及其他控制信息。ICMP向其他结点传输的信息类型有:

            -通知目的结点不可到达

            -发送特定路由或路由器的差错状态信息

            -对可达结点状态的请求或响应信息

            -超时(生存期终止)数据报通知

    IGMP    Internet组管理协议,负责对IP组播进行管理,例如组播组的建立和删除、组成员的建立和删除等

    3).TCP/IP的传输层

    TCP/IP协议栈提供了两个传输层协议:

    TCP         传输控制协议。可靠的面向连接的传输层协议。

    UDP        用户数据报协议。不可靠的面向无连接的传输层协议。

    4).TCP/IP的应用层

    应用层为应用程序提供访问低层服务的能力,并定义应用程序用于交换数据的协议。应用层的协议有许多,常用的协议有:

    FTP         文件传输协议。用于交互式的文件传输。

    Telnet     虚拟终端协议。用于登录远程主机。

    NNTP     网络新闻传输协议。用于传送网络新闻消息。

    SMTP     简单邮件传输协议。用于邮件服务器之间的邮件传送。

    HTTP      超文本传输协议。用于传输Web页面文件。

    POP        邮局协议。用于从邮件服务器上取回邮件。

    DNS        域名解析服务。用于将域名解析为IP地址。

    SNMP     简单网络管理协议。用于在网络管理控制台和网络设备(路由器、网桥、集线器等)之间选择和交换网络管理信息。

既:

五层模型:除去OSI七层模型的表示层和会话层

四层模型:除去OSI七层模型的表示层,会话层和物理层

在这里插入图片描述

 注意:

应用程序实现对应用层的封装分用

对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容(四层封装分用);对于一台路由器, 它实现了从网络层到物理层(下三层封装分用);对于一台交换机, 它实现了从数据链路层到物理层(下两层分装分用);对于集线器, 它只实现了物理层;
 

3. TCP/IP 的具体含义

从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议。实际生活当中有时也确实就是指这两种协议。然而在很多情况下,它只是利用 IP 进行通信时所必须用到的协议群的统称。具体来说,IP 或 ICMP、TCP 或 UDP、TELNET 或 FTP、以及 HTTP 等都属于 TCP/IP 协议。他们与 TCP 或 IP 的关系紧密,是互联网必不可少的组成部分。TCP/IP 一词泛指这些协议,因此,有时也称 TCP/IP 为网际协议群。

互联网进行通信时,需要相应的网络协议,TCP/IP 原本就是为使用互联网而开发制定的协议族。因此,互联网的协议就是 TCP/IP,TCP/IP 就是互联网的协议。

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

4. 数据包

包、帧、数据包、段、消息

以上五个术语都用来表述数据的单位,大致区分如下:

  • 包可以说是全能性术语;
  • 帧用于表示数据链路层中包的单位;
  • 数据包是 IP 和 UDP 等网络层以上的分层中包的单位;
  • 段则表示 TCP 数据流中的信息;
  • 消息是指应用协议中数据的单位。

每个分层中,都会对所发送的数据附加一个首部,在这个首部中包含了该层必要的信息,如发送的目标地址以及协议相关信息。通常,为协议提供的信息为包首部,所要发送的内容为数据。在下一层的角度看,从上一层收到的包全部都被认为是本层的数据。

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

数据包首部

网络中传输的数据包由两部分组成:一部分是协议所要用到的首部,另一部分是上一层传过来的数据。首部的结构由协议的具体规范详细定义。在数据包的首部,明确标明了协议应该如何读取数据。反过来说,看到首部,也就能够了解该协议必要的信息以及所要处理的数据。包首部就像协议的脸。

对封装分用的理解

就好像快递包装和拆包装,快递要包装后才可以运输,要拆包装才可以使用。通过网络传输数据也是这样。

1.封装:发送数据时,从高到低的顺序,按照对应的网络分层协议对数据进行包装
在这里插入图片描述

例如:

在这里插入图片描述

2.分用:封装的逆过程:接收数据时,从低到高的顺序,按照对应的网络分层协议,解析数据

在这里插入图片描述

例如:

在这里插入图片描述

5. 数据处理流程

下图以用户 a 向用户 b 发送邮件为例子:

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

数据处理流程如下:

① 应用程序处理

首先应用程序会进行编码处理,这些编码相当于 OSI 的表示层功能;

编码转化后,邮件不一定马上被发送出去,这种何时建立通信连接何时发送数据的管理功能,相当于 OSI 的会话层功能。

② TCP 模块的处理

TCP 根据应用的指示,负责建立连接、发送数据以及断开连接。TCP 提供将应用层发来的数据顺利发送至对端的可靠传输。为了实现这一功能,需要在应用层数据的前端附加一个 TCP 首部。

③ IP 模块的处理

IP 将 TCP 传过来的 TCP 首部和 TCP 数据合起来当做自己的数据,并在 TCP 首部的前端加上自己的 IP 首部。IP 包生成后,参考路由控制表决定接受此 IP 包的路由或主机。

④ 网络接口(以太网驱动)的处理

从 IP 传过来的 IP 包对于以太网来说就是数据。给这些数据附加上以太网首部并进行发送处理,生成的以太网数据包将通过物理层传输给接收端。

⑤ 网络接口(以太网驱动)的处理

主机收到以太网包后,首先从以太网包首部找到 MAC 地址判断是否为发送给自己的包,若不是则丢弃数据。

如果是发送给自己的包,则从以太网包首部中的类型确定数据类型,再传给相应的模块,如 IP、ARP 等。这里的例子则是 IP 。

⑥ IP 模块的处理

IP 模块接收到 数据后也做类似的处理。从包首部中判断此 IP 地址是否与自己的 IP 地址匹配,如果匹配则根据首部的协议类型将数据发送给对应的模块,如 TCP、UDP。这里的例子则是 TCP。

另外吗,对于有路由器的情况,接收端地址往往不是自己的地址,此时,需要借助路由控制表,在调查应该送往的主机或路由器之后再进行转发数据。

⑦ TCP 模块的处理

在 TCP 模块中,首先会计算一下校验和,判断数据是否被破坏。然后检查是否在按照序号接收数据。最后检查端口号,确定具体的应用程序。数据被完整地接收以后,会传给由端口号识别的应用程序。

⑧ 应用程序的处理

接收端应用程序会直接接收发送端发送的数据。通过解析数据,展示相应的内容。


网络数据传输

<1>局域网

ARP协议:IP转MAC
RARP协议:MAC转IP





(1)认识IP和MAC

IP(对应网络模型中的网络层 用来识别 TCP/IP 网络中互连的主机和路由器):

网络世界的门牌号:IP地址

IP的格式:xxx.xxx.xxx.xxx
IP由四个部分组成,每个部分都是0-255.
网络号:前三个部分组成(用来标识网段),前三个部分相同,标识在一个网段(因为两个IP地址和各自的子网掩码相与的结果相同 就是属于同一网段 而子网掩码一般都是xxx.xxx.xxx.0 所以一般只要IP地址前三部分相同 就是在同一网段)
主机号:最后一个部分用来标识主机号
IP分为A-E五大类,部分范围是局域网IP,部分是广域网IP,可以根据规范,知道某个IP是局域网IP还是公网IP
注意: 局域网内(局域网IP):网段唯一,同一个网段,主机号唯一
公网(公网IP):公网IP是唯一的

MAC(对应网络模型中的数据链路层 用来识别同一链路中不同的计算机):

和网卡硬件绑定的,全球唯一
作用:网络数据传输定位网卡硬件的位置,一个主机可能有多个网卡(例如蓝牙连接,无线连接,有线连接的网卡),电脑硬件定位数据发送的目的位置只能使用MAC

总结:
IP地址描述的是路途总体的起点和终点。(给人用的,网络主机的逻辑地址)
MAC地址描述的是路途上的每一个区间的起点和终点(给电脑硬件用的,网络主机的物理地址)

IP地址和MAC地址的区别:

  • IP地址是服务商给你的,mac地址是你的网卡物理地址;
  • IP地址局域网内可以随便更改,但是mac地址一般不能更改;
  • 长度不同。IP地址为32位,MAC地址为48位;
  • 寻址协议层不同。IP地址应用于OSI第三层,即网络层,而MAC地址应用在OSI第二层,即数据链路层。

IP地址和MAC地址的关系:

  • 首先,IP 间的通信依赖 MAC 地址。
  • 使用 ARP 协议将IP地址转换为 MAC 地址进行通信:
  • 在网络上,通信的双方在同一局域网(LAN)内的情况是很少的,通常是经过多台计算机和网络设备中转才能连接到对方。而在进行中转时,会利用下一站中转设备的 MAC 地址来搜索下一个中转目标。这时,会采用 ARP 协议(Address Resolution Protocol)。

ARP 是一种用以解析地址的协议,根据通信方的 IP 地址就可以反查出对应的 MAC 地址。

图文形象说明:

ip和mac协同通信

流程解说:

发送端(名称为A,IP地址为IP_A,MAC地址为MAC_A)向接收端(名称B,IP地址为IP_B,MAC地址为MAC_B)发送数据。这两台主机之间不可能是直接连接起来的,因而数据包在传递时必然要经过许多中间节点(如路由器,服务器等等),我们假定在传输过程中要经过C1、C2其MAC地址分别为M1,M2)两个节点。

A在将数据包发出之前,先发送一个ARP请求,找到其要到达IP_B所必须经历的第一个中间节点C1的MAC地址M1,然后在其数据包中封装这些地址:IP_A、IP_B,MAC_A和M1。当PAC传到C1后,再由ARP根据其目的IP地址IP_B,找到其要经历的第二个中间节点C2的MAC地址M2,然后再将带有M2的数据包传送到C2。如此类推,直到最后找到带有IP地址为IP_B的B主机的地址MAC_B,最终传送给主机B。

在传输过程中,IP_A、IP_B和MAC_A不变,而中间节点的MAC地址通过ARP在不断改变(M1,M2),直至目的地址MAC_B。 
 

(2)网络数据传输的特性

1.IP,MAC起的作用
2.封装分用——发送数据从高到低封装,接收数据从低到高分用
3.结合IP,MAC,理解网络数据传输,本质上是一跳一跳的传输数据

在这里插入图片描述

首先根据目的主机发送http请求,从源IP发送数据到目的IP
从源MAC(1)发送数据到目的MAC(2),然后MAC(2)对数据进行封装和分用,再以MAC(2)为源MAC,目的MAC为MAC(3),以此,发送数据到最终目的MAC。
注意: 接收数据报的主机:可能在一些情况下(广播或者转发),出现目的MAC不是我,我也能收到的情况(后面会提到)。

五元组:
源IP,目的IP,源端口,目的端口,协议号

IP:标识主机,给人用
源IP:发送数据的主机
目的IP:接收数据的主机

端口号:
源端口:标识发送数据的进程
目的端口,标识接收数据的进程
协议号:进程需要封装,解析数据报的数据格式

DNS协议:
作用:域名转IP
在这里插入图片描述

主机/路由器:都存在DNS缓存
域名查询的方式:上图树形结构从下往上查找(缓存,域名服务器)。
先在主机/路由器的DNS缓存中找,如果找不到,依次向上

特殊的IP,域名:本机IP为127.0.0.1,本机域名为localhost

(3)网络数据传输流程


ARP/RARP协议:

ARP协议:IP转MAC
RARP协议:MAC转IP

注意:交换机和集线器自己是没有MAC地址的,都是通过转发(不会修改源MAC和目的MAC)
交换机有MAC地址转换表,可以根据MAC找到对应的端口,而集线器没有这个功能

1)网络互联的方式

在这里插入图片描述
首先介绍集线器:如上图,网络数据传输时,直接转发到其他所有端口(工作在物理层

网络数据传输的过程:

1)ARP缓存表找到了

在这里插入图片描述

1.主机1发送数据到主机3(http://主机3:80)
2.主机1查找本机的ARP缓存表,根据ARP协议,找到目的MAC
3.数据报由主机1,发送到集线器(数据报中的源MAC(主机1),目的MAC(主机3)真实的数据报
4.集线器转发数据报到除主机1的其他所有相连的主机(主机2,主机3)
5.主机2接收:数据报中,目的MAC不是我,丢弃
主机3接收,数据报中,目的MAC是我,接收
目的IP是我,交给对应端口处理,如果不是我,执行上述网络传输(一跳一跳的过程)

2)ARP缓存表没找到

在这里插入图片描述

 在这里插入图片描述

1.主机1发送数据到主机3,http://主机3:80
2.主机1查找本机的ARP缓存表,发现找不到
3.主机1发送广播数据报(非真实数据,只是要求对应主机返回MAC:我要IP为主机3的MAC,谁是主机3,快告诉我)

4.集线器转发到主机2,主机3
5.主机2接收:要求的IP不是我,丢弃
主机3接收:要求的IP是我,返回我的MAC
6.主机1收到主机3的返回数据(IP,MAC)更新自己的ARP缓存表
7.主机1发送真实的数据到主机3

注意:使用集线器的缺陷
网络冲突,这样构成的网络区域叫冲突域/碰撞域(例如,房间里有多个人说话,那么其中某一个人说话就听不清楚了)
 

2).局域网交换机组网的方式

在这里插入图片描述

首先介绍交换机,交换机的作用:
MAC地址转换表:保存连接的主机MAC和端口的映射,目的MAC是谁,直接转发到对应的端口(不像集线器,发送到所有端口),不会产生冲突域。

在这里插入图片描述

1.主机1发送数据到主机3 ,http://主机3:80
2.主机1查找本机的ARP缓存表,如果找到,主机1发送数据到主机3。如果找不到,发送广播数据报,让IP为主机3的告诉我,你的MAC
3.交换机转发到其他所有端口(广播)
4.主机2丢弃,主机3返回自己的MAC
5.交换机知道主机3的MAC,主机1知道主机3的MAC(更新ARP缓存表)
注意:上述五个步骤,都是根据IP找MAC,和集线器的流程相似,下面的步骤时根据MAC找端口
6.主机1发送真实数据给交换机
7.交换机查找自己的MAC地址转换表,通过MAC找端口,发送数据到对应的端口
8.主机3接收,目的MAC是我,目的IP也是我
这种网络数据传输的方式就像:先问张三的手机号,再打电话给张三,对别人没有影响
 

3)局域网交换机+路由器组网的方式
注意:单独由路由器组网的方式,和上述由交换机单独组网的方式相同
首先介绍路由器,这里介绍两种:
<1>LAN口连接局域网,为主机分配局域网IP,分配的局域网IP都是一个网段(路由器下连接多个主机的类型)
路由器还有个网卡:绑定局域网的IP,和下面连接的主机进行信息交互用的


在这里插入图片描述

<2>LAN口是网卡。每个LAN口都可以连接类似交换机组网的方式

在这里插入图片描述

主机上的网络信息:

在这里插入图片描述

第二种路由器组网方式:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值