一、网络编程是什么?
一个完整计算机系统(硬件、应用软件、操作系统)可以单机运作(玩单机游戏、编写文本等)当我们需要与别的计算机系统交互时,就需要用到互联网。
网络编程基于互联网编程,就是对信息的发送到接收,中间传输为物理线路的作用。
互联网:将计算机彼此链接到一起的介质
互联网作用:是进行数据交互
互联网本质:是基于网线去访问其他计算机上面的资源
二、软件架构
1.c/s架构
软件编写时只需要写client(客户端)、server(服务端)即可。用户端向服务端发送信息再由服务端调动,就使信息交互起来,计算机之间的互联就完成了。
该架构客户端可以高度定制,缺点是使用比较复杂
2.b/s架构
软件编写时需要写browser(浏览器)、server(服务器)即可。浏览器向服务器发送信息,达成信息交互。
该架构用户使用简便,缺点是网页端无法高度定制、体验不够完美
三、OSI七层
1.交换机
让接入交互机的多台计算机之间彼此互联
2.局域网
由交换机组成的网络称之为局域网(一个区域)
在局域网中可以直接基于mac地址实现数据交互
但是可能会产生广播风暴:交换机中同一时间出现太多广播操作
mac地址只能用于局域网交互数据 不能跨局域网传输
3.广播与单播
广播:在交换机中群发
单播:定向回复消息(记录mac地址)
4.路由器
将局域网彼此链接起来并支持数据交互
互联网其实可以看成是由多个局域网链接在一起
1.物理层
主要功能为定义了网络的物理结构,传输的电磁标准,Bit流的编码及网络的时间原则,如分时复用及分频复用。决定了网络连接类型(端到端或多端连接)及物理拓扑结构。说的通俗一些,这一层主要负责实际的信号传输。
2.链路层
在两个主机上建立数据链路连接,向物理层传输数据信号,并对信号进行处理使之无差错并合理的传输
此层使用了以太协议规定了数据传输方式
mac地址:该编号是由12位16进制数组成,前六位是产商编号,后六位是流水线号
3.网络层
主要负责路由,选择合适的路径,进行阻塞控制等功能。
IP协议:
规定了每台接入互联网的计算机都必须有一个IP地址
IPV4:点分十进制
最小:0.0.0.0
最大:255.255.255.255
IPV6:十六进制
IP地址分为公网IP和私网IP
公网IP是可以直接被浏览器访问到的 但是私网IP是不可以的
我们所有人的电脑默认使用的都是私网IP
4.传输层
最关键的一层,向用户提供可靠的端到端(End-to-End)服务,它屏蔽了下层的数据通信细节,让用户及应用程序不需要考虑实际的通信方法。
PORT协议(端口协议)
用于标识一台计算机上面正在运行的应用程序(端口号类似于手牌号)
端口号的范围是:0~65535
0~1024:系统经常使用的端口号
1024~8000:常用软件端口号
- 同一时间同一台计算机上面端口号不能冲突
- 端口号是动态分配的
IP地址:用于标识全世界独一无二的一台接入互联网的计算机
PORT号:用于标识一台计算机上面的某一个应用程序
IP+PORT:能够标识全世界独一无二的一台计算机上面的某一个应用程序
我们日常生活使用浏览器访问的各个网址其实就是IP+PORT
www.baidu.com 好记
14.215.177.29:80 难记
ip:port
很多常见的服务端都不需要指定端口 只要访问了ip地址内部去会自动映射
域名解析
将好记的地址解析成真正的地址
www.baidu.com 解析 202.108.22.5:80
5.应用层
保持应用程序之间建立连接所需要的数据记录,为用户服务。 三大协议NetBEUI和 IPX/SPX TCP/IP
四、TCP/UDP协议
1.TCP
TCP连接是全双工的,即双方的数据读写可以通过一个连接进行。完成数据交换之后,通信双方都必须断开连接以释放系统资源。
TCP协议的这种连接是一对一的,所以基于广播和多播(目标是多个主机地址)的应用程序不能使用TCP服务。而无连接协议UDP则非常适合于广播和多播。
- TCP协议报头
- 源端口号/目的端口号: 表示数据从哪个进程来, 到哪个进程去.
- 32位序号:
- 4位首部长度: 表示该tcp报头有多少个4字节(32个bit)
- 6位保留: 顾名思义, 先保留着, 以防万一
- 6位标志位
连接管理机制
正常情况下, tcp需要经过三次握手建立连接, 四次挥手断开连接.
三次握手
第一次:
客户端 = > 服务器 此时服务器知道了客户端要建立连接了
第二次:
客户端 < = 服务器 此时客户端知道服务器收到连接请求了
第三次:
客户端 = > 服务器 此时服务器知道客户端收到了自己的回应
到这里, 就可以认为客户端与服务器已经建立了连接.
四次挥手
第一次:
客户端 = > 服务器
客户端发送连接释放报文段,停止发送数据,主动关闭TCP连接。
第二次:
客户端 < = 服务器
服务器端返回一个确认报文段,此时客户端到服务器该方向的连接就释放了,此时整个TCP连接处于“半关闭状态”。
第三次:
客户端 < = 服务器
服务器端发送完数据,就发出连接释放的报文段,主动关闭TCP连接。
第四次
客户端 = > 服务器
客户端返回一个确认报文段,等到时间等待计时器设置的2MSL(最长报文段寿命)后,连接彻底释放。
2.UDP协议
UDP 只在 IP 的数据报服务之上增加了很少一点的功能。ip数据报服务每个IP数据报包含两部分,一个头和一个正文,正文部分也称之为有效净荷,不建立连接。
- UDP协议报头