网络通信

Posted wang-kai-1994

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络通信相关的知识,希望对你有一定的参考价值。

网络通讯的基本要素

 

1.物理介质

网线,光纤,无线网络

2.通讯协议

用于规定双方如何交换数据

OSI七层模型

后续简化为五层

  • 应用层

  • 传输层

  • 网络层

  • 数据链路层

  • 物理层

    OSI就相当于计算机界的通用语言

物理层:

基于电子器件发送电流信号,根据电流信号对应二进制数据

但是单纯的二进制是没有意义的,必须知道如何解析这些二进制,这就有了数据链路层

数据链路层:

链路层的协议是以太网协议

以太网的协议的目的是对二进制数据做出规定,主要功能是:

1.定义电信号的分组方式

一组电信号构成一个数据包,叫做‘帧’

每一帧分为:报头head和数据data两部分

head包含:(固定18个字节):

1.发送者/源地址,6个字节

2.接收者/目标地址,6个字节

3.数据类型(标签 + 以太类型),6个字节

data包含:(最短46b,最长1500b)

数据包超过1518就分片发送

2.MAC地址:

ethernet规定接入internet的设备都必须具备网卡,发送端和接收端的地址便是指网卡的地址,即mac地址
# mac地址:每块网卡出厂时都被烧制上一个世界唯一的mac地址,长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)

 

广播: ? 有了mac地址,同一网络内的两台主机就可以通信了 ? ethernet采用最原始的方式,广播的方式进行通信,即计算机通信基本靠吼

交换机有保存MAC地址的功能

网络层:

以太网存在的问题:

世界范围的互联网是由一个个彼此隔离的小的局域网组成的,

如果所有的计算机都采用以太网的广播方式来寻找其他计算机,

那么一台机器发送的包全世界都会收到,这就不仅仅是效率低的问题了,

这会是一种灾难, (广播风暴就是这么产生的)

 

所以:

必须找出一种方法来区分哪些计算机属于同一广播域,哪些不是,如果是就采用广播的方式发送,

如果不是,就采用路由的方式(向不同广播域/子网分发数据包),

mac地址是无法区分的,它只跟厂商有关;

网络层功能:

引入一套新的地址用来区分不同的广播域/子网,

这套地址即网络地址, 网络地址到底长什么样, 又是如何区分子网的?

IP协议:

Internet Protocal Address 。互联网协议地址

IP地址

ip协议定义的地址称之为ip地址,广泛采用的v4版本即ipv4,它规定网络地址由32位2进制表示

范围 : 0.0.0 — 255.255.255 即一个局域网最多有255台电脑

一个IP地址通常写为十进制,例如: 192.168.10.1

前三个是网络好,标识字网

后面三个是主机号,标识主机

IP地址的分类:

A类保留给政府,10.开头

B类分配给中等规模公司,172.开头

C类分配给任何有需要的人,192.

D类用于组播

E类用于实验

子网掩码

子网掩码是一个32位地址,用于屏蔽IP地址的一部分以区别网络标识和主机标识

并说明该IP地址是在局域网上,还是在远程网上。

它的网络部分全部为1,主机部分全部为0

比如,IP地址172.16.10.1,子网掩码前24位1,主机部分为0,十进制格式就是255.255.255.0

为什么要用子网掩码:

单纯的IP地址段只是标识了IP地址的种类,无法辨识一个IP所处的子网

知道”子网掩码”,我们就能判断,任意两个IP地址是否处在同一个子网络。

方法是将两个IP地址与子网掩码分别进行AND运算(两个数位都为1,运算结果为1,否则为0),

然后比较结果是否相同,如果是的话,就表明它们在同一个子网络中,否则就不是。

IP协议的作用:

IP协议的作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络。

IP数据包:

ip数据包也分为head和data部分,无须为ip包定义单独的栏位,直接放入以太网包的data部分

 

ARP协议:

ARP协议的由来:

IP是通常是动态分配的, 是一个逻辑地址, 而数据传输则必须依赖MAC地址,

那如何才能通过IP得到对方的MAC地址呢? 这就需要ARP协议了

arp协议功能:

通过广播的方式发送数据包,获取目标主机的mac地址

 

案例: ? 主机192.168 .1.101访问192.168.111.101 ? 交换机发现目标IP不在当前子网中, ? 交换机发起ARP请求, 将目标IP设置为对方的网关IP, 默认情况下, 网关的主机号都为1; ? 所以接收方(192.168 .111.101)的网关为192.168.111.1 ? 发送方交换机发起的ARP数据帧: ? 对方网关收到请求后发现ip是自己的ip则回复ARP请求, 将其MAC地址告知发送方交换机, ? 发送方交换机,将对方的网关与的MAC地址与IP存储到自己的ARP缓存中, ? 告知发送方(192.168 .1.101)对方网关的MAC地址,

发送方同样将对方网关MAC与目标IP映射关系存储到, 本机ARP缓存中 ? 至此ARP请求结束可以开始传输数据 ? 后续确定了MAC地址后发送的数据帧内容:

总结:

ARP通过广播的方式来获取MAC地址, 不在同一子网时

ARP得到的是对方网关的MAC地址, 数据到达对方网关后,

由网关根据IP交给对应的主机, 当然对方网关获取主机MAC也是通过ARP

四.传输层:

传输层的由来:

1.通过物理层建立链接通道

2.通过数据链路层的MAC, 可以定位到某个局域网中的某台主机,

3.通过网络层的IP地址, 子网掩码, 可以定位到全球范围某一局域网下的某台主机

4.再通过传输层的端口号访问到具体的应用程序

端口号:

端口是需要联网的应用程序与网卡关联的编号

传输层功能:

建立端口到端口的通信

端口范围0 - 65535,0 - 1023

TCP协议:

可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,

通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。

TCP之所以可靠, 是因为在传输数据前需要三次握手确认建立链接

TCP协议的建立条件:

三次握手:

三次握手的过程实际上实在确认我发的你能收到, 你发的我也能收到, 从而保证数据传输的的可靠性

链接是一个虚拟的概念, 不实际存在, 只要三次握手成功即表示连接建立成功!

(ACK和SEQ,TCP是引用了其.)

三次握手时的确能保障数据传输是可靠的, 那么握手后的数据传输要如何保证传输成功呢?

TCP协议要求在发送数据后, 必须接收到对方的回复信息才能确认数据成功发送,

如果一段时内没有收到回复信息, 会自动重新发送,

如果重试的次数过多则表示链接可能已经中断!

四次挥手:

四次挥手的目的是保证双方的数据传输已经全部完成, 同样是为了保证数据的完整性

TCP协议总结:

优点: 能够保证数据传输是完整的

缺点: 由于每次都需要传输确认信息, 导致传输效率降低

场景: 多用于必须保证数据完整性的场景, 例如文本信息, 支付信息等!

 

UDP协议:

UDP协议采取的方式与TCP完全不同, 其根本不关心, 对方是否收到数据,

甚至不关心, 对方的地址是否有效, 只要将数据报发送到网络, 便什么都不管了! 总结:

优点: 由于不需要传输确认信息, 所以传输效率高于TCP协议 ? 缺点: 传输数据可能不完整 ? 场景: 视频聊天, 语音聊天等, 不要求数据完整性, 但是对传输速度要求较高

 

五.应用层

应用层由来:用户使用的都是应用程序,均工作于应用层,互联网是开放的,大家都可以开发自己的应用程序,用什么样的数据格式来传输,就需要由应用程序开发者自己来制定 应用层功能:规定应用程序的数据格式。 例:TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了”应用层”。

至此一连串高低电压就通过层层协议, 变成了我们在应用程序中看到的各种数据

 


以上是关于网络通信的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段14——Vue的axios网络请求封装

在tablayout片段之间进行通信[重复]

与另一个片段通信的片段接口

无法通过接口获取与片段通信的活动

片段和活动之间的核心区别是啥?哪些代码可以写成片段?

201555332盛照宗—网络对抗实验1—逆向与bof基础