网络编程初识
1.历史背景
在国外,网络其实早就已经出现了。最初网络的用途是用于军事战争上,当时正处于美苏争霸时期,双方为了不受到对方核弹的影响,于是创建了互联网,为了搭建一套不怕核弹的通信体系。只不过等到后期,随着苏联解体,商家发现这个互联网不仅能用于军事,用于生活也是很好的。于是,互联网便开始普及
2.局域网
局域网(Local Area Network,简称 LAN)是一种在有限地理范围内(如一栋建筑、一个办公室、一所学校或一个家庭)将计算机、服务器、打印机、路由器等设备连接起来,实现数据共享、资源互通和设备通信的计算机网络。它是计算机网络中最基础、最常见的类型之一,也是构建更大规模网络(如城域网 MAN、广域网 WAN)的基础单元。
就像我们生活中,通过家用路由器连接多台设备或者像在学校宿舍中接网线
3.广域网
广域网(Wide Area Network,简称 WAN)是一种覆盖广阔地理范围(通常跨越城市、国家甚至全球)的计算机网络,核心作用是连接分散在不同区域的局域网(LAN)、城域网(MAN)或独立设备,实现远距离的数据传输、资源共享和跨区域通信。它是互联网(Internet)的基础架构,也是我们日常访问 “外网”(如浏览网页、远程办公)的核心依赖。
也就是说这个广域网能让我们在中国,通过互联网就能访问美国的谷歌或者是其国家的任意网站。
4.广域网和局域网的比较
对比维度 | 广域网(WAN) | 局域网(LAN) | 生活场景举例 |
---|---|---|---|
地理范围 | 大(跨城市、国家、全球) | 小(家庭、宿舍、办公室) | 广域网:北京用户访问上海的服务器;局域网:宿舍里 4 台电脑互传文件 |
传输速率 | 较低(用户端通常 100Mbps~10Gbps) | 较高(100Mbps~100Gbps,无损耗) | 广域网:下载一部电影需 5 分钟;局域网:同一宿舍传电影仅需 10 秒 |
延迟与稳定性 | 高延迟(50~500ms)、易丢包 | 低延迟(<10ms)、高稳定 | 广域网:玩国际服游戏卡顿;局域网:玩宿舍局域网游戏无延迟 |
搭建与管理 | 依赖运营商,用户无法独立搭建 | 个人 / 企业可自主搭建(路由器 + 网线) | 广域网:办宽带需找电信 / 联通;局域网:自己买路由器就能搭家庭 WiFi |
核心目的 | 跨区域连接与全球资源访问 | 本地设备互联与资源共享 |
5.网络通信基础
5.1 IP地址
IP地址能定位到一台主机的位置,是用来标识一台主机,能理解为快递的收货地址。以127.0.0.1这个地址为例,它通过三个点把IP地址分成四份,每个部分提取的值是0~255字节
5.2端口号
在网络通信中,IP地址用于标识主机网络地址,端口号可以标识主机中发送数据、接收数据的进程。 简单说:端口号用于定位主机中的进程。能理解为收件人电话号码
6.协议
6.1什么是协议
协议就是一种约定,约定通信双方,对于传输数据的格式/含义进行约定,就像我们中国人与中国人对话时,能听得懂是因为我们都遵守中文协议,但和外国人就行不通,那是因为别人没有遵守中文协议
在计算机中,有很多的协议。程序员为了让这些协议不乱,因此,对他们进行了 分层。并且让上层协议调用下层协议,下层协议为上层协议提供服务。就好比我们和电话的关系,我们打电话时,要调用电话协议,电话给我们提供服务。而且,上层协议不用在意下层协议的细节,直接使用即可。就好比我们为了打电话,我们不会关心这是大哥大还是苹果手机。我们关心的只有它能否提供给我们打电话的服务
6.2 OSI七层网络模型
这个是程序员刚开始预想模型,但现在真实情况不是这样。真实情况是五层模型
6.3 TCP/IP五层网络模型
通常我们也叫这个为四层模型,因为我们能将一二层变成同一层,他们都属于硬件层,这些是和硬件设备相关的
对于我们软件开发,我们不用太关心物理层,主要关心的是软件层面
(1)传输层
这一层关心的是起点和终点,约定的是起点和终点的通信规则。不关心通信过程,就像买家和卖家之间关系,这两者只会关心从哪里运到哪里
(2)网络层
网络层是关心是通信的中间过程,从起点如何到终点,中间怎么走都要规划。就像快递公司,他要负责规划中间路线怎么走,要负责统一规划
(3)数据链路层
这一层相当于快递公司员工负责两个相邻节点之间的传输过程。就像快递公司现在规划了这个包裹是从上海到南京到广东,而这一层关心从上海到南京这一节点是如何运输的,是通过海运还是空运。
(4)物理层
这一层约定了光纤的结构、网线的结构等,它这个相当于是基础设施。
(5)应用层
这一层是最为重要的对于我们程序员来说,它决定了应用程序如何使用/构造传输的数据,数据是用来干啥。就相当于买家买了件物品之后,他要决定这个物品如何使用。与快递公司、商家无关。
举个例子:
就好像我们在电脑上qq上发送一个hello时,传输层会把发送方qq号、接收方qq号、消息内容、传输时间等给封装成数据包。接着再到网络层,再数据包的基础上,再进行加协议报头。然后再到数据链路层再次加上帧头帧尾。最终到物理层,然后再转为电磁波传输出去