网络编程1

目录

局域网LAN + 广域网WAN = 组网

网络通信基础

IP地址

IPV4

动态规划IP

NAT

IPV6

端口号

协议

 协议分层

TCP/IP五层(或四层)协议

应用层

传输层

网络层

数据链路层

物理层

网络设备所在分层

网络数据传输的基本流程

封装和分用

发送方

接收方


局域网LAN + 广域网WAN = 组网

WAN口:(W:wide)一般咱们自己家中入户的宽带就是插这个口.

LAN口:(L:local)就是插在LAN口上的设备在一个局域网里通过WAN口链接到另一个局域网.

局域网和广域网并没有一个明确的界限;要是局域网空间跨度特别大,那么也可以称它为广域网.


网络通信基础

IP地址

IP地址用于定位主机的网络地址,也就是说我们主机在网络的地址.

IP地址是一个32位的二进制数 通常被分割成4个“8位二进制数”(4个字节)

如何查询我们自己的主机地址?Win + R 输入 cmd

再输入ipconfig,即可查看我们自己的主机的IP地址

我们主机的IP是属于内部网络,是路由器根据规划IP地址分配给我们自己的单个设备使用的网络IP地址.外界是不能根据此IP找到我们的.

IPV4

表示形式通常采用了“点分十进制”方式:a.b.c.d(都在0-255整数之间);也就是上面我们查看的自己的主机IP:显示的是IPV4地址 192.168.56.1

还有一个常见的IP地址:127.0.0.1 回环IP

回环IP主要用于本机到本机的网络通信

IPV4是由32位的二进制构成,可以最多表示的地址为2^32(42亿个);那么全球现在快80亿的人口,IP地址显然是不够分配的,所以对于IPV4采用了动态规划IP机制.

动态规划IP

是对IPV4的优化机制:把所有的IP地址进行统一规划管理,当设备需要上网时才分配给IP地址.

虽然在当时解决了部分的IP匮乏的情况,但在当今还是远远不满足的.

NAT

NAT是用于在本地网络中使用私有地址,在连接互联网时转而使用全局 IP 地址的技术。NAT实际上是为解决IPv4地址短缺而开发的技术(但也只是暂时性的解决)。那在IP匮乏的时代真的没有解决方法了吗?nononononono!咱们还有IPV6!

IPV6

IPV6是由128位的二进制构成,可以最多表示的地址为2^128 = 2^32 * 2^32 * 2^32 * 2^32 * 2^32.

没有对比就没有伤害 这可比IPV4大了无穷无尽…… 数量甚至都可以给每一粒沙子命名.


端口号

描述主机上的某个应用程序,也就是定位主机中的进程.

端口号是0~65535范围的数字,在网络通信中,进程可以通过绑定一个端口号,来发送及接收网络数据。

两个不同的进程,不能绑定同一个端口号;一个进程可以绑定多个端口号.


协议

就是说保障我们都可以相互顺畅的通信,就要共同遵循一组约定,我们才能相互通信交流.

本质上计算机之间的传输媒介是光信号和电信号。通过 "频率" 和 "强弱" 来表示 0 和 1 这样的信息.

 协议分层

将一个大而复杂的协议给它拆分成许许多多的小协议,每个小协议负责都一部分的工作

协议分层最大的优点:类似于面向接口编程,定义好层间的接口规范,双方遵循规范来对接就可以,更好的拓展和维护.(也可以理解为更好的做到封装,提供方可以隐藏某些细节,只需要开放接口,用户使用接口即可;也做到了解耦合,毕竟类似于提供接口,那么就可以将该对应层的协议替换成其他协议)

协议分层最大的优点简言之:上层不需要了解下层的细节(封装)

                                               灵活调整/替换某层的协议

协议分层主要的两种形式:OSI七层网络模式、TCP/IP五层(或四层)网络模型


TCP/IP五层(或四层)协议

五层:应用层、传输层、网络层、数据链路层、物理层(偏硬件)

应用层

和应用程序相关 就好比我在拼夕夕买了商品,我只需要下单,我只负责用即可;不需要管它中间是谁来打包,谁来运输,走哪条路线.

传输层

起点和重点;只关注结果,不关注过程.

网络层

负责点到点的通信(任意节点)

在复杂的网络环境中,在两个点之间规划最适合的路线;就好比我们手机没电了去某个地方没有办法导航,路线很多,那就可以去问路人,一直边走边问,就可以找到我们想去的地点.网络层也是这样一层一层的询问,越询问越近

数据链路层

负责完成相邻的两个设备之间的通信(同一根网线相连的两个设备)

物理层

硬件设备(网卡、网线...)保证所有的主机和网络设备之间都是互相匹配的


网络设备所在分层

主机:物理层到应用层(5层都实现了)

路由器:物理层、数据链层、网络层

交换机:物理层、数据链层


网络数据传输的基本流程

封装和分用

以A在qq发信息给B为例

发送方

1.应用层

假设我们自定义了qq的协议(当人协议实现是不同的,是由程序猿约定的;咱们假设而已~)

假设qq的应用层协议是:发送人、接收人、时间、消息内容(构建传输层数据报:就是按照一定的格式进行字符串拼接)

(发送方和接收方需要达成一致)

应用程序就会调用传输层提供的接口,把上述的内容交给传输层进行处理

2.传输层

最主要TCP UDP  假设咱们现在使用UDP

上面的数据从应用层传到了传输层,交给了UDP,所以UDP按照自己的协议格式生成了一个UDP数据报

UDP数据报 = UDP报头 + 载荷

UDP不关心应用层数据,当作字符串去构造一个UDP数据报

传输层会把构建好的UDP数据报进一步交给网络层

3.网络层

网络层最主要协议是IP协议

IP协议也会根据自己的格式构造出IP数据报

IP数据报 = IP报头 + 载荷

IP不关心载荷的内容,当作字符串去构造一个IP数据报

然后继续把数据传输给数据链层

4.数据链层

以太网:平时上网需要插得一个网线

以太网又会针对IP数据报,进行进一步的封装,再添加数据头和数据尾

以太网不关心载荷的内容,当作字符串,进一步拼接帧头帧尾,构造成以太网数据帧

然后继续把数据传交给物理层

5.物理层

硬件设备(网卡)

本质上都是二进制的数据(一组0101构成的)

硬件设备就需要对上述的数据进行转换了—>光信号/电信号/电磁波

到这里 A就完成了发送

接收方

1.物理层

(硬件设备,网卡)收到了光信号/电信号/电磁波

把收到的信号进行解调 得到一串0101二进制序列 也就是 以太网帧

把这个数据交给上一层,数据链路层

2.数据链路层

数据链路层的以太网协议就会针对这个数据进行解析

把载荷部分取出来 交给上一层(IP协议)

3.网络层

IP协议针对这个数据报进行解析,去掉了IP报头,取出载荷 进一步交给传输层

4.传输层

根据IP报头中的字段 就可以知道这个载荷是一个UDP数据报 交给UDP处理

UDP也针对这个数据报进行解析,去掉了报头,取出载荷 进一步交给应用程序

5.应用层

UDP报头中 有一个字段,目的端口

根据目的端口找到关联的应用程序 交给这个程序即可

qq程序收到这个数据 就会按照qq的应用层协议 进行解析

把数据显示到页面上~~~~

可以看到:主机A 从上到下,依次添加报头的过程 称为 封装(打包快递~)

                   主机B从下到上,依次解析报头的过程 称为 分用(拆包快递~)

上述的qq发消息也正是体现了每一层完成自己的任务 不会管理其他层的事务 ~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值