LINUX网络编程:网络基础

目录

1.网络诞生的背景

2.网络协议

3.网络和系统的关系

4.局域网通信

5.网络通信

6.端口号


1.网络诞生的背景

在计算机诞生最初是用来计算弹道的轨迹的,随着时间的发展,计算机越来越普及,这时候就需要计算机与计算机之间的协作,这个协作就产生了大问题,计算机A处理完的数据,必须拷贝到移动的存储介质像软盘,再交给计算机B处理,这个过程非常的麻烦不说,还非常的不安全,效率还非常低。

有了需求,就必然有人会有完成,然后局域网就诞生了。

随着计算机机的增多,计算机通过交换机和路由器链接在一起

将局域网与局域网之间相互联系起来,就构成了广域网

2.网络协议

随着网络通信的距离越来越远,就产生了种种问题。

网络协议就是一种约定,其诞生就是为了解决网络通信产生的种种问题

在很多的教材中都提到了osi七层模型,但是在工程实践当中,应用层,表示层,会话层,这三层是难以区分的,所以通常用tcp/ip五层模型表示。

3.网络和系统的关系

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

协议本质就是一个c语言编写的结构体,所有的主机都认识这个结构体,对方接收到这个结构体对字段进行解包/分用。

4.局域网通信

每一台主机的网卡上都有一个独一无二的编号,MAC地址,在局域网中想给哪台电脑发消息,只需要知道对方MAC的地址即可。

在任何时刻只允许一台主机进行发消息,因为他们属于同一个碰撞域,都发消息会产生数据碰撞。

每台主机都有碰撞检测算法,检测到冲突就自动重发

局域网就是临界资源,同时只能有一台计算机访问。

原理

网络通信发送数据,必须由应用层依次向下封装,封装到链路层,传输给对方,每经过一层都要加该层的协议报头。

网络通信接收数据,必须有链路层向上解包分用,解包就是将报头和有效载荷分离,分用就是将有效载荷交给下一层的协议(报头中含有要交付给上层哪个协议)。

在逻辑上看来,每一层都是直接通信的。

5.网络通信

跨网段的主机的文件传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器.
路由器跨两个子网,一定有两张网卡 ---- 必须有两个mac地址。

直接说与局域网通信的不同

因为两台主机不在同一个子网里,所以没办法直接通信,需要路由器的转发。

路由器根据发送消息驱动程序对接受的数据进行解包,然后根据根据接受消息驱动程序程序进行封装,在发送到对应的主机,进行解包分用。

这样就屏蔽了ip层以下的所有差异,无论是以太网还是令牌环网都可以通信。

6.端口号

网络通信的目的并不是要发送给某一台主机,更准确的来说应该发送到某台主机的某个进程。

ip可以标识唯一的一台主机,而端口号标识的是主机的唯一一个进程

使用 ip + 端口号的方式就可以,定位互联网中的唯一一台主机的唯一进程。

从系统的角度理解,网络通信就是不同主机的进程相互通信。

  • 20
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值