同一台主机上程序是通过端口太区分各自的数据
网络编程的程序布局方式有BS和CS,BS是网络编程的一种,它是可以通过公网交互的
网络通信协议
国际标准化组织(ISO,即International Organization for Standardization)定义了网络通信协议的基本框架,被称为OSI(Open System Interconnect,即开放系统互联)模型。
OSI网络通信协议模型,是一个参考模型,实际应用中不需要这样复杂的定义,TCP/IP协议是事实上的标准。TCP/IP协议参考了OSI模型,划分四层:应用层,传输层,互连网络层,网络接口层(物理+数据链路层)。TCP/IP协议中的应用层协议,就对应于OSI中的应用层,表示层,会话层;又物理层和数据链路层统称为网络接口层。
网络协议的分层
由于网络结点之间联系很复杂,在制定协议时,把复杂成份分解成一些简单的成份,再将它们复合起来。最常用的复合方式是层次方式,即同层间可以通信、上一层可以调用下一层,而与再下一层不发生关系。
把用户应用程序作为最高层,把物理通信线路作为最低层,将其间的协议处理分为若干层,规定每层处理的任务,也规定每层的接口标准。
开放系统互连参考模型与TCP/IP参考模型对比
数据封装与解封
数据封装产生的原因,用户传输数据整体特别大,因此需要分片段传输。分片段之后又要在目的端合并,也就是解封,封装和解封的依据就是数据片段的头和尾。数据封装 1的定义就是指将协议数据单元(PDU)封装在一组协议头和协议尾中的过程
数据传输的过程
数据发送处理过程
(1)应用层将数据交给传输层,传输层添加上TCP的控制信息(称为TCP头部),这个数据单元称为段(Segment),加入控制信息的过程称为封装。然后,将段交给网络层。
(2)网络层接收到段,再添加上IP头部,这个数据单元称为包(Packet)。然后,将包交给数据链路层。
(3) 数据链路层接收到包,再添加上MAC头部和尾部,这个数据单元称为帧(Frame)。然后,将帧交给物理层。
(4)物理层将接收到的数据转化为比特流,然后在网线中传送。
封装
数据接收处理过程
(1)物理层接收到比特流,经过处理后将数据交给数据链路层。
(2)数据链路层将接收到的数据转化为数据帧,再除去MAC头部和尾部,这个除去控制信息的过程称为解封,然后将包交给网络层。
(3)网络层接收到包,再除去IP头部,然后将段交给传输层。
(4)传输层接收到段,再除去TCP头部,然后将数据交给应用层。
解封
从以上传输过程中,可以总结出以下规则:
发送方数据处理的方式是从高层到底层,逐层进行数据封装
接收方数据处理的方式是从底层到高层,逐层进行数据解封装
接收方的每一层只把对该层有意义的数据拿走,或者说每一层只能处理发送方同等层的数据,然后把其余的部分传递给上一层,这就是对等层通信的概念
IP地址 2
目前主流使用的IP地址是IPV4,但是随着网络规模的不断扩大,IPV4面临着枯竭的危险,所以推出了IPV6
IPV4:32位地址,并以8位为一个单位,分成四部分,以点分十进制表示,如192.168.0.1。因为8位二进制的计数范围是00000000—11111111,对应十进制的0-255
IPV6:128位(16个字节)写成8个16位的无符号整数,每个整数用四个十六进制位表示,每个数之间用冒号(:)分开,如:3ffe:3201:1401:1280:c8ff:fe4d:db39:1984
注意:
192.168.0.0–192.168.255.255为私有地址,属于非注册地址,专门为组织机构内部使用
端口
IP地址用来标识一台计算机,区分同一台计算机上多种网络应用程序
URL
每一信息资源都有统一且唯一的地址,该地址就叫URL(Uniform Resource Locator)URL由4部分组成:协议、存放资源的主机域名、资源文件名和端口号。如果未指定该端口号,则使用协议默认的端口。例如http 协议的默认端口为 80。 在浏览器中访问网页时,地址栏显示的地址就是URL。
在java.net包中提供了URL类,该类封装了大量复杂的涉及从远程站点获取信息的细节。
Socket
TCP和UDP属于传输层协议,应用层使用套接Socket来与下一层传输层联通。Socket实际是传输层供给应用层的编程接口。Socket就是应用层与传输层之间的桥梁。使用Socket编程可以开发客户机和服务器应用程序,可以在本地网络上进行通信,也可通过Internet在全球范围内通信。