Linux网络编程--初篇--初识计算机网络

Posted 蚍蜉撼树谈何易

tags:

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

初识计算机网络

计算机网络定义与功能

计算机网络定义

计算机网络就是将分散在不同地理位置上的具有自主处理能力的多台计算机经过传输媒介和通信设备连接起来,在网络操作系统和网络通信软件的xie控制下,按照统一的协议进行协同工作,达到资源共享目的的计算机系统。
协议:理解为通信的各个方面之间所达成的一致的、共同遵守和执行的约定。概括的讲,在相互通信的不同计算机进程之间,存在有一定次序、相互理解和相互作用的过程,协议规定了这一过程应能实现的功能和应满足的要求。
协议组成:语法、语义、语序三大要素构成。
语法:数据格式、信号电平等
语义:指的是协议语法成分的含义,包括协调用的控制信息与差错管理
语序:时序控制与速度匹配的关系。
自主处理能力:每台计算机可以独立工作,任何一台计算机都具有比较完善的软硬件配置,能独立执行程序,具有计算与存储能力。

计算机网络功能

1)资源共享
2)数据通信
3)信息的集中和综合处理
4)负载均衡
5)提高系统的可靠性和性能价格比。
计算机网络最基本的目的是为了资源共享与信息共享

计算机网络分层

OSI参考模型

OSI(open system interconnecting)开放系统互连模型。

TCP/IP 体系结构标准


体系结构对应分层

物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层.
数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线LAN等标准. **交换机(Switch)**工作在数据链路层.
网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.
传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机.
应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等. 我们的网络编程主要就是针对应用层.物理层我们考虑的比较少. 因此很多时候也可以称为 TCP/IP四层模型.
一般而言
对于一台主机, 它的 操作系统内核实现了传输层、网络层的内容;
对于一台路由器, 它实现了从 网络层到物理层;
对于一台交换机, 它实现了从数据链路层到物理层;
对于集线器, 它只实现了物理层;

分层的意义

降低耦合性,增强程序的健壮性(鲁棒性)。

计算机网络所要关注的几大问题

传输的效率问题、安全问题、定位问题
数据报=协议+数据

理解数据的传输


局域网技术–局域网内传输

局域网概念

局域网(Local Area Network,LAN)是指在某一区域内由多台计算机互联成的计算机组。一般是方圆几千米以内。局域网可以实现文件管理、应用软件共享、打印机共享、工作组内的日程安排、电子邮件和传真通信服务等功能。局域网是封闭型的,可以由办公室内的两台计算机组成,也可以由一个公司内的上千台计算机组成。

局域网特点

1)网络范围覆盖小
2)传输速率较高
3)具有较低的传输延迟和误码率
4)经营权与管理权归某个单位所有
5)便于安装、维护与扩充,建网成本低、周期短。

局域网分层


物理层:信号的编码与译码;为进行同步用的前同步码的产生和去除。;比特的传输与接收。
MAC子层(媒体访问控制子层):负责在物理层基础上实现无差错的通信。MAC帧的封装与拆卸;维护各种MAC协议;比特差错控制;寻址等。
LLC子层:数据链路的建立与释放;LLC帧的封装与拆卸;差错控制;提供与高层的接口等。

局域网中的一些问题

数据碰撞问题
网络中如果只有一台计算机在传送数据,信号能够畅通无阻地抵达目的地;但如果有两台以上的计算机同时传送数据时,那么信号在传递过程中就会发生冲突,而且这种情况在多主机网络中肯定是会经常、大量地出现。在局域网中通过MAC地址唯一标识一台主机。 根据MAC地址的不同达到传输正确的目的。

介质访问控制

目的:解决当局域网中共用信道的使用产生竞争时,如何分配信道的使用权问题。本质:避免“碰撞”
目前:较为常用CSMA/CD、还有令牌环访问控制法和令牌总线访问控制法。

CSMA/CD(基于冲突检测的载波监听多路访问技术)

原理:先听后发,边发边听,冲突停发,随机延迟后重发。

使用场景 :“半双工通信”,同一时间,一个站点,要么接收数据,要么发送数据,不可以同时满足。
1)多点接入,网络上所有的工作站收发数据共同使用同一总线,且发送数据为广播式的。(广播:所有的工作站都可以收到,到时数据前面会加上固定的MAC地址),如果MAC地址与自身MAC地址不符,则选择丢弃,相同则做出处理。
2)载波侦听,在发送数据前确定总线上有没有数据传输,若有的话,就不发,等待总线为空时发送。若总线上此时为空,则立即发送数据。
3)碰撞检测,若网上有两个或以上工作站同时发送数据,在总线上会产生信号的混合,则局域网任何一个工作站无法辨别出真正数据。这种情况称为“数据冲突”,又称为碰撞。为了减少冲突发生后的影响,当一个工作站发出数据后,需要不停的检测自己的数据,看看有没有在传输过程中与其他工作站数据发生冲突。这就是冲突检测。
4)若有冲突,则立即停止发送数据,但是要发送一个加强冲突的JAM(阻塞)信号,以便使网络上所有工作站都知道网上发生了冲突,然后,等待一个预定的随机时间,且在总线为空闲时,再重新发送未发完的数据。

争用期与最短帧长概念

争用期:当帧发生碰撞后会向其发送站点返回碰撞信号,设该帧发送时间为t,则检测到碰撞信号的时间为2t,则在整个信道上,取该时间的最大值为2T为争用期。T为单程端对端的传播时延。若经过2t都没有检测到碰撞,则我们可以肯定此次发送不会发生碰撞。
最短帧长
最短数据帧长(bit)/数据传输速率(Mbps)=2*(两站点间的最大距离(m)/200m/μs)
CD技术主要着重于减低一次冲突所造成的损失,它能将冲突所浪费的时间减少为检测冲突所需时间。要让CD技术发挥效率,数据帧的发送时间至少要大于等于检测冲突所需时间,否则在检测出冲突之前传输已经结束,CD技术也失去意义。所以CSMA/CD有最短帧长的要求。

二进制指数退避算法(随机延迟后重发)

二进制退避技术(Binary Exponential Back off). 指在遇到重复的冲突时,站点将重复传输,但在每一次冲突之后,随着时延的平均值将加倍。二进制指数退避算法提供了一个处理重负荷的方法。尝试传输的重复失败导致更长的退避时间,这将有助于负荷的平滑。如果没有这样的退避,以下状况可能发生:两个或多站点同时尝试传输,这将导致冲突,之后这些站点又立即尝试重传,导致一个新冲突。
特点:发生碰撞多了的话,此时每次等待时间就会相应变长。但是不是无休止的等,当重传16次不成功时,就丢弃该帧,传输失败,报告给高层协议。
退避时间计算:争用期(2t)* 随机次数r

跨网络传输

扩展知识

公网ip与局域网ip(内网)

公网ip:指的是在全世界范围内能唯一标识这台主机的ip地址。公网IP一般是网络运营商分配的。包括固定的和自动分配的。
内网ip:在局域网中根据自动分配ip的。所以内网的ip在当前局域网中是唯一的,但在所以的网络的ip中不是唯一的。
NAT(Network Address Translator)是网络地址转换,它实现内网的IP地址与公网的地址之间的相互转换,将大量的内网IP地址转换为一个或少量的公网IP地址,减少对公网IP地址的占用。

网络中的地址管理

认识IP地址
IP协议有两个版本, IPv4和IPv6. 我们整个的课程, 凡是提到IP协议, 没有特殊说明的, 默认都是指IPv4(32位)
1)IP地址是在IP协议中, 用来标识网络中不同主机的地址;
2)对于IPv4来说, IP地址是一个4字节, 32位的整数;
3)我们通常也使用 “点分十进制” 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255
4)IPv6(128)位
认识MAC地址
1)MAC地址用来识别数据链路层中相连的节点;
2)长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
3)在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址.

以上是关于Linux网络编程--初篇--初识计算机网络的主要内容,如果未能解决你的问题,请参考以下文章

初识网络参考模型/协议

初识网络协议:UDP和TCP

初篇:我与Linux

Linux----网络原理初识

Linux 网络编程常用套接字类型

❤️爬虫必备->Selenium从黑铁到王者❤️初篇——万字博文详解