本文将讲解网络编程的一些常见名词以及含义
在这之前让我们先唠一唠网络的产生吧,其实网络的产生也拯救了全世界
网络发展史
网络的产生是在美苏争霸的期间,实际上双方都持有核武器,希望把对方搞垮的同时不希望自己和对方两败俱伤.
希望破坏对方的核武器发射,这就涉及到三个方面,第一是核武器的发射井,其太过偏僻不方便破坏,第二是双方的军事基地,实力太过强大不好破坏,第三就是切断发射器与核弹之间的联系
因此矛头就产生了,此时互联网给出了一个解决方案:采用多冗余的设计,来防止破坏,含义就是发射井和发射器之间添加多条联系路线,这样可以确保不被完全切断通讯.
国内在2000年开始,互联网才开始起步
2002-2003年,网吧便开始兴起,这也让更多人接触到了电脑
2007年,网络开始普及,这也是乔布斯发布初代iphone的时候,意味着移动互联网已经具备一定的规模
2011-2012年 苹果4开始发布,一代肾机,甚至有人卖肾买手机,智能手机的浪潮一下子就席卷而来了
2012年后持续了一段时间全民创业风,大把的资本涌入计算机领域,只要你有从创业的思路就可以去资本家那里"骗钱"
以后互联网就开始蓬勃发展到今天,已经出现了很多互联网的企业,阿里,字节,腾讯,出现了互联网的繁荣景象...
近两年经济萧条但是互联网却仍然有这么高的诱惑力,所以加油吧朋友们.
第一个概念就开始聊聊局域网和广域网的概念以及区别,其实像早期的联机游戏都只能在同一个wifi下进行局域网简称LAN,即表示本地的私有组建的网络,搭建方式如下
1.可以通过直接用一根网线连接两个电脑
2.通过集线器组建
3.通过交换机组建
和上图类似,一个交换机有多个网口(24/48网口的最为常见)
4.基于路由器和交换机组建
可以用路由器接交换机再接主机,类似于树状结构
广域网可以包括东南西北的分公司的机器,将这些机器使用专线连接起来
全球范围的互联网也是广域网的一个子集
类似于生活中收快递的地址,IP地址描述了一台网络设备在网络上的位置
计算机用点分十进制来描述这个数字,本质上是一个32位的数字,也就是4个字节,把每个字节以.号分隔开,例:192.168.0.1 这就是一个ip地址 取值范围是0-255
描述主机还是那个是哪个应用在使用主机,也就是IP地址能确定主机的网络地址,而端口号可以确定是用的是QQ还是微信,不同的应用的端口号不通用,比如MySQL的端口号是3306..
网络上最常用的就是传输数据,这是网络上比较核心的一个概念.协议本质上就是一种通信过程中的约定.发送方和接收方要约定好数据的形式与格式,才能确保两者之间的通信能够正确进行
协议是一种约定,确保不同厂商生产的设备之间可以相互配合
两个设备想要进行相互通信,就需要源IP和目的IP源端口号和目的端口号和协议号
网络通信中,需要涉及很多的细节,如果用一个协议来约定好方方面面的内容的话,这个协议未免显得过于臃肿.所以需要进行协议的
由于上面的问题我们也就开始对协议进行了拆分,一共拆分成了七层协议,这样更方便协议中的相互配合,将功能相似的协议方到同一个协议层中,下层协议为上层协议提供服务,上层协议调用下层协议的功能.且只有相邻的协议之间可以进行通信.(和公司一样,很忌跨层汇报)
优点:
1.上层协议直接使用下层协议即可,无需了解下层协议如何实现的(相当于下层协议把细节已经封装好了)
2.某一层的协议进行替换之后对于其它层的没有影响(代码实现不同,功能是相似的,直接调用即可)
常见的两个网络模型
OSI七层网络模型(理想的网络模型)
TCP/IP网络模型(现实中使用)
OSI七层模型
分层名称? ? ? ? ? ?功能? ? ? ? ? ? ? ? ? ? ? ? ? 举例
应用层? ? ?针对特定应用的协议? ? ? ? ? ? ? 文件传输用文件传输协议,邮件发送用邮件发送协议
表示层? ? ?设备固有数据格式和网络标准格式的转换? ? ? ? ? ? ? ? ? 接受不同的形式的数据转换成
网络标准格式
??
会话层? ? ? 负责建立和断开通信? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 什么时候开始和断开连接
传输层? ? ?负责两个节点之间的数据传输? ? ? ? ? ? ? ? ? ? ? ?是否会有数据丢失
网络层? ? ?地址管理和路由选择? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?路线的选择(通过那个路由完成传递信息)
数据链路层? ? ? ? ? ? ? ? 互连设备之间传送和识别数据帧? ? ? ? ?? ? ? ? 数据帧和比特流之间的转换? ? ? ? ? ? ? ? ? ? ? ?
物理层? ? ? 以0101的电压来表示连接器和网线的规格
所谓的五层模型就是将上面的三层合为一层应用层,如果是四层模型就再去掉物理层
其中包含很多协议
应用层:简单电子邮件传输STMP,文件出书协议FTP等
传输层:负责主机之间的数据传输,如TCP协议
网络层:负责地址管理和路由选择 如IP协议
数据链路层:负责数据帧之间的传送和识别
物理层:负责光电信号的传递
主机? - 操作系统内核实现了网络层到物理层之间的内容,也就是下四层之间的内容
路由器 - 网络层
交换机? -?数据链路层
集线器 - 物理层
注:真实世界中的路由器和交换机其实也会有对方的功能
封装(贴标签)就是和取快递送快递一样,假设我想发一条信息给我的好朋友,这时候信息就会通过各种协议封装打包快递,传送到好朋友的家里,打开之后就可以看到我发送的数据了
下面简述A用QQ给B发送hello的时候B是如何收到信息的
1.通过应用层QQ的协议发送一个约定格式给下一层
假设约定格式为(发送方QQ;接收方QQ,时间,内容)
2.此时传输层就会接收到上方格式的数据包,假设使用UDP协议传输,此时数据包变为
UDP报头,发送方QQ;接收方QQ,时间,内容
3.再次传输给网络层
网络层会根据IP协议给原有的数据包在加上一个IP报头
IP报头,UDP报头,发送方QQ;接收方QQ,时间,内容
4.传输给数据链路层
这里的核心协议是一趟网
我们会将原来的数据包转化为以太网数据帧,也就是在头尾就加上帧操作
以太网帧头,IP报头,UDP报头,发送方QQ;接收方QQ,时间,内容,以太网帧尾
5.最后传输给物理层 硬件设备
这时候硬件设备会将这样的数据帧转化为0101的二进制数据,如光信号,高低电压等进行发送
随后B进行接收的时候就是上述操作的反操作,逐步取下标签也就得到了A发送的信息
网络编程中发起请求的一方我们称之为客户端,接受处理请求的一方称之为服务器
一个程序在不同的场景不同的视角之下可能扮演着不同的绝俗,可能是服务器也可能是客户端
客户端给服务器发送的数据称之为请求
客户端给服务器发生的数据称之为响应
服务器和客户端之间的交互也是有很多种模式的
1.一问一答? 比如网站
2.一问多答? 比如下载任务
3.多问一答? ?比如上传任务
4.多问多答? ?比如远程控制桌面
我们使用键盘和鼠标对远程电脑进行控制,其实就是发送一个一个的请求,接受到的画面其实就是响应