网络编程基础


一、网络编程
网络编程是一种实时更新应用数据的常用手段,是开发优秀网络应用的前提和基础。

二、基本概念
客户端(Client):一般就是前端/前台,移动应用(iOS、android等应用)开发都是前端开发。
服务器(Server):为客户端提供服务、提供数据、提供资源的机器,负责处理网络请求,本质也是一台计算机(+服务器软件),服务器开发就是后端/后台开发(java/php/.net/node.js)等。
服务器集群: 将多台服务器组合在一起,每一台服务器上跑的都是相同的代码。
请求(Request):客户端向服务器索取数据的一种行为。
响应(Response):服务器对客户端的请求做出的反应,一般指返回数据给客户端。
网络请求所需要的数据 , 不会存储在服务器中 ! 一般数据都存储在数据库中
数据库 : 服务器接收到客户端的请求之后 , 会做一些逻辑处理 , 然后从数据库中取到数据之后 , 返回给客户端 ! // MySQL sqlite3 CoreData

三、服务器
1.服务器按开发阶段来分有两种:
(1)远程服务器:
外网服务器。应用上线之后供全体用户使用的服务器,速度取决于用户的网速和服务器的性能。
(2)本地服务器
内网服务器、测试服务器。开发测试阶段使用的服务器,供内部开发测试人员使用, 由于是局域网,所以速度飞快,有助于提高开发测试效率。
2.本地服务器的选择  
在要想在Mac上方便地启动Java服务器,大致有以下步骤
1)安装JDK (Java Development Kit)
2)安装Java的开发工具:eclipse  
3)利用Java编写一套服务器程序
4)配置服务器的容器:Apache Tomcat 
5)启动Apache Tomcat
3.本地服务器的主机地址
本地服务器的主机地址一般有3种写法:
(1)127.0.0.1 :每台机器内置的IP地址,指的就是机器本身。
(2)localhost :等价于第1种情况的127.0.0.1
(3)交换机/路由器分配的IP地址 :真机测试一定要用这个,且真机和服务器得在同一个局域网内。

四、网络七层协议
1. 物理层 :
通过物理手段( 光缆/电缆/无线电波 将电脑连接入网络 传输 ‘0’和‘1’的电信号 主要定义了物理设备的标准,如网线/光纤的接口类型,各种传输介质的传输速率等。
2. 数据链路层 :
单纯的 0和1 没有意义 为了解读0和1, 将物理层的数据分组并且规定解读方式 这样就产生了数据链路层 一组电信号就是一个数据包  "MAC 地址 " / 网卡 / 广播等
3. 网络层 :
作用是确定每一台计算机的位置 建立 " 主机 " " 主机 " 之间的通信 在网络中,有很多台计算机,我们如何通过一条最佳的路径将数据传递给另一台计算机? 为了解决这个问题,就有了网络层,在网络层引入了一套地址机制:网络地址,简称网址,又叫做Ip地址。通过Ip地址,可以找到唯一的一台计算机。 通过路由器、交换机等具有寻址功能的设备帮助我们找到Ip地址对应的计算机,所以产生了Ip协议,如 IPv4、 IPv6协议 每一台计算机都是通过网卡连入网络,最终都会通过网卡来收发信息,每一块网卡都有一个唯一的地址:MAC地址, 我们通过MAC地址来接收和发送信息。
IP地址按照协议版本: IPv4  IPv6
IP地址: 用来确定网络中唯一的一台计算机
子网掩码 : 用来确定计算机所在的子网络
路由器 / 网关 : 路由器地址 / 管理员地址
DHCP 协议: 自动获取IP地址的协议!
路由器/交换机: 这些设备具有网络寻址功能!
4. 传输层 :
建立 ' 应用程序 ' ' 应用程序 ' 之间的通信 或者说 建立 " 端口 " " 端口 " 之间的通信 使不同的应用程序能够接收到自己所需要的的数据。
给每一个使用网卡的应用程序一个编号 : 比如 QQ: 3000 微信 :2999 比邻 :58888 , 利用这个编号来确定信息是给哪一个应用程序的 在聊天信息中 必须附带这个编号 这个编号称之为 " 端口 就是应用程序使用网卡的编号 !
传输层有两个重要的协议:TCP协议 和 UDP协议。
TCP协议/三次握手协议: 建立连接需要三次 ! 能够保证数据不丢失,是安全的,但是非常复杂,实现困难。
UDP协议/报文头协议:非常简单,但是可靠性差,一旦数据发出,无法知道对方是否收到。
Socket编程:
在Unix系统中,所谓的Socket编程,指的就是 主机 + 端口 的编程。也就是说,Socket编程涵盖了网络层和传输层。
Socket(套接字/插座) == 主机 + 端口,最常见的Socket编程就是 TCP/IP 编程。
特别注意:Socket 只是一个通讯模型,不属于网络(七层)协议。
5. 会话层:
为了实现自动收发数据,自动寻址功能;我们引入了会话层.会话层的作用,就是 自动的管理应用程序之间的通信。
6. 表示层:
不同的系统语法肯定不同,用以解决不同系统之间的通信问题。
7. 应用层 :
规定 " 应用程序 " 的数据格式
最常见的应用层协议:HTTP协议/超文本传输协议!

五、网络通信
网络通信的基础: 知道对方的MAC地址和IP地址.
网络通信的实质: 互相交换数据包。 数据中必须包含很多信息: 接收方和发送方的 MAC 地址 / IP 地址/ 端口号!
1. 在同一个子网络中 , 数据以广播的方式传递 !
MAC 地址 / 网卡地址 : 信息在传递过程中 , 会附带接收方和发送方的 MAC 地址 .
2. 在不同的子网络中 , 数据以路由的方式传递 !
路由 : 信息在不同的子网络中传递 !( 以一种最佳 ( 最短 / 最快 ) 的路径来传递信息 !)

六、 数据包
 数据包是从数据链路层引入的每一个数据包都包含 "标头"和"数据"两个部分。"标头"包含本数据包的一些说明,"数据"则是本数据包的内容。
以太网数据包:
最基础的数据包。标头部分包含了通信双方的MAC地址,数据类型等;'标头'长度:18字节,'数据'部分长度:46~1500字节。
IP数据包:
标头部分包含通信双方的IP地址,协议版本,长度等信息。'标头'长度:20~60字节,"数据包"总长度最大为65535字节。
TCP/UDP数据包:
标头部分包含双方的发出端口和接收端口。
UDP数据包:
'标头'长度:8个字节,"数据包"总长度最大为65535字节,正好放进一个IP数据包。
TCP数据包:
理论上没有长度限制,但是,为了保证网络传输效率,通常不会超过IP数据长度,确保单个包不会被分割。
应用程序数据包:
标头部分规定应用程序的数据格式,数据部分传输具体的数据内容。
嵌套:
数据包层层嵌套, 上层协议的数据包嵌套在下层协议数据包的数据部分 上层变动完全不影响下层结构, 最后通通由以太网数据包来进行数据传递。
分包/拆包:
一般传递的数据都比较大,会将数据包分割成很多个部分来传递。
拼包:
将接收到数据包按序号拼接起来,组成完整的数据包。
数据包的结构如图:
七、IP地址
静态IP地址:
固定不变的IP地址,需要用户自己手动设置。
动态IP地址:
通过DHCP协议自动生成的IP地址。
DHCP协议:
通过DHCP协议,用户获得本机的动态IP地址,子网掩码,网关,DNS服务器等。
子网掩码:
与IP地址配合使用判断两台计算机是否位于同一个子网络。
DNS服务器:
可以将域名(网址)转换成IP地址。

八、HTTP请求
http://   超文本传输协议;开发中使用最多的一个协议!
https://  安全协议; https == http + ssl(安全通道)!需要服务器支持!
file://   访问本地文件协议
mailto:  邮件协议!
1. URL(Uniform Resource Locator):
统一资源定位符。URL就是资源的地址、位置,通过一个URL能够找到互联网上唯一的一个资源。
URL的基本格式:  协议://主机地址/路径
协议:不同的协议代表不同的资源查找方式,资源传输方式。
URL中的常见协议:
<1>HTTP:   超文本传输协议,在网络开发中最常用的协议,访问的是远程的网络资源。格式:http://...
<2>https:  安全协议。https == http + ssl(安全通道),需要服务器支持!
<3>file:   访问的时本地计算机上的资源。格式:file://(不要再加主机地址了)
<4>FTP:    访问的是共享主机的文件资源。格式:ftp://
<5>mailto: 访问的是电子邮件地址。格式:mailto:
主机地址:
存放资源的主机IP地址(域名)。
路径:
资源在主机中得具体位置。
2. HTTP请求的完整过程:
<1> 请求:
客户端发出请求,向服务器索要数据(操作数据)。
<2> 响应:
服务器对客户端的请求做出响应,返回客户端所需要的数据。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值