计算机网络编程基础
1.软件开发架构
1.c/s架构组成:
c:client 客户端
s:server 服务端
PS:
服务端需要具备的三大特征:
1.24小时不间断提供服务(24小时监听)
2.固定的地址(IP地址)
3.能够服务多个用户(高并发)
2.b/s架构组成:
b:browser 浏览器
s:server 服务器
PS:
1.浏览器统一充当各个服务端的客户端
2.bs架构本质上也是cs架构
2.网络编程基础理论
1.简介
网络编程其实研究的就是程序之间的数据通信。
2.由来
基于远程传输数据的技术最早诞生于美国军方(前沿技术通常都是由军事产生,后淘汰为民用)
3.远程数据传输发展史(民用)
1.有线电话 ---> 电话线互联
2.无线电话 ---> 信号发射器
3.大屁股电脑 ---> 网线
4.笔记本电脑 ---> 网卡
PS:
1.远程数据之间的交互必须基于物理连接介质
2.除了需要有物理连接介质之外还需要有一些能够保证数据彼此无障碍交互的东西(标准或协议)
eg:OSI七层协议
3.OSI七层协议
每台计算机想要实现远程数据之间的交互必须要有以下七层协议:
1.应用层 ---> 文件传输,电子邮件,文件服务,虚拟终端
2.表示层 ---> 数据格式化,代码转换,数据加密
3.会话层 ---> 解除或建立与其他接点的联系
4.传输层 ---> 提供端对端的接口
5.网络层 ---> 为数据包选择路由
6.数据链路层 ---> 传输有地址的帧,错误监测功能
7.物理连接层 ---> 以二进制数据形式在物理媒体上传输数据
PS:
1.应用层、表示层、会话层可以归纳成应用层,所以七层也可以划分为五层
2.数据的走向是从下而上
3.1物理连接层
提供一个物理连接接口(网线口、无线网卡)
3.1.1常见硬件
1.交换机:能够使接入该机器的所有计算机之间彼此互联
2.局域网:由交换机组成的网络
3.互联网:可以理解为是多个局域网之间彼此互联
4.路由器:能够连接多个局域网并实现局域网之间的数据传输
PS:
1.数据都是基于mac地址传输的:广播风暴
2.mac地址不能跨局域网传输
3.2数据链路层
1.规定了电信号的分组方式
2.以太网协议
规定了计算机必须有一块网卡,并且网卡上面要有一个固定的一串数字,也称之为mac地址,类似于计算机的身份证号。
PS:
mac码是由一串12位16进制数组成,前六位是产商编号,后六位是流水线号。
3.3网络层
需遵循的协议:IP协议、ICMP协议、ARP协议、RARP协议、AKP协议、UUCP协议
1.IP协议:
规定了接入互联网的计算机都必须有一个IP地址用于唯一标识。
2.IP协议分两种:
IPV4:
最小:0.0.0.0
最大:255.255.255.255
IPV6:
能够表示出地球上每一粒沙子
3.IP地址分为:
公网IP:
公网IP需要申请并花钱购买
私网IP:
私网IP 自带的但是无法直接基于互联网访问
IP地址能够标识接入互联网的唯一一台独一无二的计算机
3.4传输层
需遵循的网络协议:TCP协议、UDP协议
1.端口(port)协议:
端口范围:0-65535
特点:系统动态分配
eg:第一次运行微信,系统随机取一个端口号。
而关闭微信重新启动,系统会随机再取一个端口号。
端口号常见使用:
0-1024 是系统默认需要使用的端口号
1024-8000 是一些常见软件的端口号
以后我们开发的软件使用的端口号是8000之后
PS:
1.端口号能够精确标识一台计算机上面正在运行的一款应用程序
2.端口号在同一台计算机上同一时刻不能重复
3.IP+port ---> 127.0.0.1:8080 可以精确标识世界上某一台接入互联网的计算机上面某一个正在运行的应用程序
3.5应用层
应用层都是人为自定义的协议标准,可遵循可不遵循
eg:
HTTP协议、FTP协议...
4.TCP协议
TCP协议又称之为流式协议、可靠协议。
TCP协议它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送。
TCP协议数据传输流程:
1.三次握手 ---> 建立链接
状态:
listen监听态:等待对方发送请求
syn_rcvd态:忙于恢复确认建立请求
2.四次挥手 ---> 断开链接
四次挥手的步骤不能合并成三次
5.UDP协议
UDP协议称之为不可靠协议。
在UDP协议下数据传输没有通道的概念,数据发送出去了就不管了。
eg:早期qq使用的就是UDP协议