软件结构
C/S 结构: 全称为 Client/Server 结构, 是指客户端和服务器结构. 常见程序有QQ, 迅雷等软件.
B/S 结构: 全称为 Browser/Server 结构, 是指浏览器和服务器结构. 常见浏览器有谷歌, 火狐等.
两种架构各有优势, 但是无论哪种架构, 都离不开网络的支持. 网络编程, 就是在一定的协议下, 实现两台计算机的通信的程序.
网络通信协议
网络通信协议: 通信协议是对计算机必须遵守的规则, 只有遵守这些规则, 计算机之间才能进行通信. 这就好比在道路中行驶的汽车一定要遵守交通规则一样, 协议中对数据的传输格式, 传输速率, 传输步骤等做了统一规定, 通信双方必须同时遵守, 最终完成数据交换.
TCP/IP 协议: 传输控制协议 / 因特网互联协议( Transmission Control Protocol/Internet Protocol), 是 Internet 最基本, 最广泛的协议. 它定义了计算机如何连入因特网, 以及数据如何在它们之间传输的标准. 它的内部包含一系列的用于处理数据通信的协议, 并采用了 4 层的分层模型, 每一层都呼叫它的下一层所提供的协议来完成自己的需求.
上图中, TCP/IP 协议的四层分别是应用层, 传输层, 网络层和链路层, 每层负责不同的通信功能.
链路层: 链路层定义了物理传输通道, 通常是对于某些网络连接设备的驱动协议, 例如针对光纤, 网线提供的驱动.
网络层: 网络层是正个 TCP/IP 协议的核心, 他主要用于将传输的数据进行分组, 将分组数据发送到目标计算机或者网路
传输层: 主要使用网路程序进行通信, 在进行网路通信时, 可以采用 TCP 协议, 也可以采用 UDP 协议.
应用层: 主要负责应用程序的协议, 例如 HTTP 协议, FTP 协议
协议分类
通信的协议还是比较复杂的, java.NET 包中包含的类和接口, 它们提供低层次的通信细节. 我们可以直接使用这些类和接口, 来专注于网络程序开发, 而不用考虑通信的细节. java.NET 包中提供了两种常见的网络协议的支持:
TCP: 传输控制协议 (Transmission Control Protocol).TCP 协议是面向连接的通信协议, 即传输数据之前, 在发送端和接收端建立逻辑连接, 然后再传输数据, 它提供了两台计算机之间可靠无差错的数据传输. 三次握手: TCP 协议中, 在发送数据的准备阶段, 客户端与服务器之间的三次交互, 以保证连接的可靠.
第一次握手, 客户端向服务器端发出连接请求, 等待服务器确认.
第二次握手, 服务器端向客户端回送一个响应, 通知客户端收到了连接请求.
第三次握手, 客户端再次向服务器端发送确认信息, 确认连接. 整个交互过程如下图所示.
完成三次握手, 连接建立后, 客户端和服务器就可以开始进行数据传输了. 由于这种面向连接的特性, TCP 协议可以保证传输数据的安全, 所以应用十分广泛, 例如下载文件, 浏览网页等.
UDP: 用户数据报协议(User Datagram Protocol).UDP 协议是一个面向无连接的协议. 传输数据时, 不需要建立连接, 不管对方端服务是否启动, 直接将数据, 数据源和目的地都封装在数据包中, 直接发送. 每个数据包的大小限制在 64k 以内. 它是不可靠协议, 因为无连接, 所以传输速度快, 但是容易丢失数据. 日常应用中, 例如视频会议, QQ 聊天等.
网络编程三要素
协议
协议: 计算机网络通信必须遵守的规则.
IP 地址
IP 地址: 指互联网协议地址(Internet Protocol Address), 俗称 IP.IP 地址用来给一个网络中的计算机设备做唯一的编号. 假如我们把 "个人电脑" 比作 "一台电话" 的话, 那么 "IP 地址" 就相当于 "电话号码".
IP 地址分类
IPv4: 是一个 32 位的二进制数, 通常被分为 4 个字节, 表示成 a.b.c.d 的形式, 例如 192.168.65.100 . 其中 a,b,c,d 都是 0~255 之间的十进制整数, 那么最多可以表示 42 亿个.
IPv6: 由于互联网的蓬勃发展, IP 地址的需求量愈来愈大, 但是网络地址资源有限, 使得 IP 的分配越发紧张. 有资料显示, 全球 IPv4 地址在 2011 年 2 月分配完毕. 为了扩大地址空间, 拟通过 IPv6 重新定义地址空间, 采用 128 位地址长度, 每 16 个字节一组, 分成 8 组十六进制数, 表示成 ABCD:EF01:2345:6789:ABCD:EF01:2345:6789 , 号称可以为全世界的每一粒沙子编上一个网址, 这样就解决了网络地址资源数量不够的问题.
常用命令
查看本机 IP 地址, 在控制台输入:
ipconfig
检查网络是否连通, 在控制台输入:
ping 空格 IP 地址
ping 220.181.57.216
特殊的 IP 地址
本机 IP 地址: 127.0.0.1 , localhost .
端口号
网络的通信, 本质上是两个进程 (应用程序) 的通信. 每台计算机都有很多的进程, 那么在网络通信时, 如何区分这些进程呢? 如果说 IP 地址可以唯一标识网络中的设备, 那么端口号就可以唯一标识设备中的进程 (应用程序) 了.
端口号: 用两个字节表示的整数, 它的取值范围是 0~65535. 其中, 0~1023 之间的端口号用于一些知名的网络服务和应用, 普通的应用程序需要使用 1024 以上的端口号. 如果端口号被另外一个服务或应用所占用, 会导致当前程序启动失败.
利用 协议 + IP 地址 + 端口号 三元组合, 就可以标识网络中的进程了, 那么进程间的通信就可以利用这个标识与其它进程进行交互.
来源: http://www.bubuko.com/infodetail-3346072.html