一、什么是网络
在计算机领域中,网络是信息传输、接收、共享的虚拟平台
二、什么是网络编程
网络编程从大的方面来说就是对信息的发送到接收。
通过操作相应的Api调度计算机硬件资源,并利用传输管道进行数据交换的过程
更为具体的涉及:网络模型、套接字、数据包
三、7层网络模型-OSI
上图是两台电脑发送、接收的过程:
表示层(Presentation):应用层(Application)调用表示层(Presentation)将应用层的东西表示成对应数据层面的东西,比如字符串。
会话层(Session):会话层的主要目的是进行不同机器用户之间会话的管理。
传输层(Transport):接收上一层的数据,在必要的时候将数据进行分割,并将这些数据交给网络层并保证这些数据段的有效性。
网络层(Network):主要作用是控制子网的运行,比如对逻辑地址进行分组传输、对路由进行选择
数据链路层(Data Link):进行物理地址寻找,同时将原始比特流转换为逻辑的传输路线
物理层(Physical):进行机械的、电子的、定时的接口通信上原始的比特流的传输,其实就是电信号或者是光信号的传输
接收的时候,首先是物理层接收到光信号或者是电信号,然后转换为数据链路层,再往上解析为网络层、传输层、会话层、表示层,再到最后的程序层面,就把数据传输到了接收的电脑上
基础层:物理层(Physical)、数据链路层(Datalink)、网络层(Network)
传输层(Transport):TCP-UDP协议层、Socket
高级层:会话层(Session)、表示层(Presentation)、应用层(Application)
四、网络模型-对应关系
五、Socket与TCP、UDP
1、Socket
简单来说是IP地址与端口的结合协议(RFC 793)
一种地址与端口的结合描述协议
TCP/IP协议的相关API的总称;是网络Api的集合实现
2、Socket的作用与组成
在网络传输中用于唯一标示两个端点之间的连接
端点:包括(IP+Port)
4个要素:客户端地址、客户端端口、服务器地址、服务器端口
3、Socket传输原理
4、TCP
TCP是面向连接的通信协议
通过三次握手建立连接,通信完成时要拆除连接
由于TCP是面向连接的所以只能用于端到端的通讯
5、UDP
UDP是面向无连接的通讯协议
UDP数据包括的端口号和源端口号信息
由于通讯不需要连接,所以可以实现广播发送,并不局限于端到端
6、TCP传输图解
7、UDP传输图解
8、Client-Server Application
TCP/IP协议中,两个进程间通信的主要模式为:CS模型
主要目的:协调网络中的计算机资源、服务模式、进程间数据共享
常见的:FTP、SMTP、HTTP
六、报文、协议、Mac地址
1、报文段
报文段是在指TCP/IP协议网络传输过程中,起着路由导航作用
用以查询各个网络路由网段、IP地址、交换协议等IP数据包
报文段充当整个TCP/IP协议数据包的导航路由功能
报文在传输过程中会不断地封装称分组、包、帧来传输
封装方式就是加上一些控制信息组成的首部,即报文头
2、传输协议
协议顾名思义,一种规定,约束
约定大于配置,在网络传输中依然适用;网络的传输流程是健壮的稳定的,得益于基础的协议构成
简单来说:A->B的传输数据,B能识别,反之B->A的传输数据A也能识别,这就是协议
3、Mac地址
Media Access Control或者Medium Access Control
意译为媒体访问控制,或称为物理地址、硬件地址
用来定义网络设备的位置
形如:44-45-53-54-00-00;与身份证类似
七、IP、端口及远程服务器
1、IP地址
互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),缩写为IP地址(英语:IP Address)
是分配给网络上适用网际协议(英语:Internet Protocol,IP)的设备的数字标签
常见的IP地址分为IPv4和IPv6两大类
1.1 IP地址-IPv4
IP地址由32位二进制数组成,常以XXXX.XXX.XXX.XXX形式表现,每组XXX代表小于或等于255的10进制数
分为A、B、C、D五大类,其中E类属于特殊保留地址
总数量:4,294,967,296个(即232):42亿个;最终于2011年2月3日用尽
如果主机号全是1,那么这个地址为直接广播地址
IP地址“255.255.255.255”为受限广播地址
1.2 IP地址-IPv6
总共有128位长,IPv6地址的表达形式,一般采用32个十六进制数。也可以想象为1632个
由两个逻辑部分组成:一个64位的网络前缀和一个64位的主机地址,主机地址通常根据物理地址自动生成,叫做EUI-64(huoz 64位扩展唯一标识)
2001:0db8:85a3:0000:1319:8a2e:0370:7344
IPv4转换位IPv6一定可行,IPv6转换位IPv4不一定可行
2、端口
2.1 如果把IP地址比作一间房子,端口就是出入这间房子的门或者窗户
0到1023号端口以及1024到49151号端口都是特殊端口
计算机之间依照互联网传输层TCP/IP协议的协议通信,不同的协议对应不同的端口
49152到65535号端口属于“动态端口”范围,没有端口可以被正式地注册占用
2.2端口总数:65536,连接能建立多少个?65536个?
这里的65536代表自己的电脑本地端口号,每个ip地址都有65536个端口号,但是如果是多IP地址的话,连接数会远远大于65536个。当然,端口依然是有限的,但是对于服务器来说,它监听80端口,无论有多少个客户端进来,都是通过80端口进行交互,不会创建额外多余的端口号
2.3 数据传输层次
3、远程服务器
局域网:一般而言,家里的环境以及公司相互电脑之间环境都属于局域网
公司和家里的电脑之间属于互联网,而非局域网
3.1 两个局域网之间是无法直接连接的
3.2 局域网的数据交换
3.3