网络基础【Linux网络编程】

目录

一、网络发展

二、协议和协议分层

OSI七层网络模型

TCP/IP协议栈

三、网络和OS的关系

四、网络传输基本流程

五、数据包封装和分用 

六、IP地址和MAC地址

MAC地址

局域网通信原理

IP地址 


一、网络发展

详细参考此篇博文:网络发展史

独立模式

计算机之间相互独立;

网络互联

多台计算机连接在一起, 完成数据共享;

局域网LAN

计算机数量更多了, 通过交换机和路由器连接在一起;

广域网WAN

将远隔千里的计算机都连在一起;

网络基础【Linux网络编程】_第1张图片

局域网和广域网只是一个相对的概念,没有明显的界限划分。

最早的网络:

1969年,美国国防高级研究项目署建立了ARPANET(阿帕网)。

二、协议和协议分层

协议是一种约定,计算机之间要想传递各种不同的信息,就要约定好双方的数据格式。

在收快递时,我们收到的不仅仅是我们购买的物品,还会有一个盒子和一个快递单(发件人信息和收件人信息等)。同理,我们在网络通信时,收发的不仅仅是消息,还要多收发一些东西,多出来的一部分就叫协议(报头)

在C语言里描述协议,就是描述协议的各种信息,就是定义一个结构体对象

为什么网络要分层?

1、规模太大

2、问题是分层的

网络基础【Linux网络编程】_第2张图片

OSI七层网络模型

OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范;

把网络从逻辑上分为了7层(物理层,数据链路层,网络层,传输层,会话层,表示层,应用层). 每一层都有相关、相对应的物理设备,比如路由器,交换机;


OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;

在工程实践中,会话和表示层一般是交给应用层做的,也就是3层压缩成一层,后面我们谈的都是TCP/IP五层模型。

TCP/IP协议栈

网络基础【Linux网络编程】_第3张图片

因为最重要的是传输层和网络层,而传输层最重要的协议是TCP,网络层最重要的协议是IP,所以就叫TCP/IP协议簇。

三、网络和OS的关系

网络基础【Linux网络编程】_第4张图片

四、网络传输基本流程

 网络通信的本质就是贯穿协议栈的过程。

网络基础【Linux网络编程】_第5张图片

局域网中,任意两台主机可以直接通信,其通信保障就是局域网协议,局域网协议有很多种,典型的有以太网(主流)、令牌环网、无线LAN(手机)等。

网络基础【Linux网络编程】_第6张图片

跨网段的主机的文件传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器。

网络基础【Linux网络编程】_第7张图片

五、数据包封装和分用 

应用层的数据通过协议栈发到网上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation)

数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的“上层协议字段”,将数据交给对应的上层协议处理。

报文 = 报头(每层协议加的数据首部)+有效载荷(你好) 

不同的协议层对“报文”有不同的称谓,传输层叫段,网络层叫数据报,链路层叫帧。 

网络基础【Linux网络编程】_第8张图片

令牌环网:持有令牌数据的主机才能进行消息发送,类似系统里锁的思想。

C主机和路由器在同一个局域网内,同一个局域网内可以直接通信,所以C主机可以根据路由器的MAC地址将数据发给路由器,路由器再根据S主机的IP地址将数据发给S主机。

IP协议屏蔽了底层网络的差异化,靠的就是工作在IP层的路由器。

IP实现了全球主机的软件虚拟层,一切皆是IP报文。

六、IP地址和MAC地址

MAC地址

每张网卡在出厂时都会有一个48位(6字节)一般用16进制数字加上冒号的形式来表示序列号(全球唯一),这个就是MAC地址。只要保证局域网内的唯一性就行。

用来识别数据链路层中相连的节点。

局域网通信原理

在局域网中,一台主机给另一台主机发送信息时,物理上每台主机都是可以接收到的,只是该主机知道该信息不是发给我的,它忽略了不主动交给上层。

网卡的工作模式不仅有正常模式,还有混杂模式,在该模式下,可以接收不是发送给自己的消息,并交给上层用户,这就是大多数抓包软件的工作原理。

安全问题可以在应用层就对数据进行加密,这样即使数据被别人抓到了,也没啥关系。

同时,以太网中存在数据碰撞问题,同一时刻,一个局域网内只能有,所以发送主机要执行碰撞避免的算法(延迟等待)一个局域网叫一个碰撞域。

网络基础【Linux网络编程】_第9张图片

如果局域网中的主机很多,那么碰撞的概率就会变大,交换机就可以解决这个问题。

如,H1要将它的数据发给H7,因为两台主机都在交换机左侧,所以该数据就不必让交互机右侧的主机收到,这样就可以降低碰撞的概率。交换机的功能就是划分碰撞域。

网络基础【Linux网络编程】_第10张图片

IP地址 

IPv4:32位,4字节

简单理解:标识特定一台主机在全网的唯一性。

网络基础【Linux网络编程】_第11张图片

ifconfig指令可以查看ip地址和mac地址:

网络基础【Linux网络编程】_第12张图片

你可能感兴趣的:(Linux网络编程,网络)