网络通信
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数据的格式,这些应用程序协议就构成了”应用层”。
至此一连串高低电压就通过层层协议, 变成了我们在应用程序中看到的各种数据
以上是关于网络通信的主要内容,如果未能解决你的问题,请参考以下文章