网络编程基础
2015-10-29 23:55
274 查看
一、网络编程
网络编程是一种实时更新应用数据的常用手段,是开发优秀网络应用的前提和基础。
二、基本概念
客户端(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> 响应:
服务器对客户端的请求做出响应,返回客户端所需要的数据。
网络编程是一种实时更新应用数据的常用手段,是开发优秀网络应用的前提和基础。
二、基本概念
客户端(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> 响应:
服务器对客户端的请求做出响应,返回客户端所需要的数据。
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- Lua下基本的网络编程示例
- linux网络编程用到的网络函数详解用和使用示例
- C#网络编程基础之进程和线程详解
- C++ 网络编程 总结
- Linux网络编程之UDP Socket程序示例
- Android网络编程之UDP通信模型实例
- 谈谈新手如何学习PHP网络编程第1/2页
- 讲解iOS开发中基本的定位功能实现
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- Python 网络编程起步(Socket发送消息)
- 检测iOS设备是否越狱的方法
- c# socket网络编程接收发送数据示例代码