网络编程笔记
网络编程从大的方面就是说对信息的发送接收。
通过操作相应API调度计算机资源硬件,并且利用管道(网线)进行数据交互的过程。
更为具体的涉及:网络模型、套接字、数据包
基础层:物理层(physical)、数据链路层(Datalink)、网络层(network).。
传输层(Transport):TCP-UDP协议层、Socket。
高级层::会话层(Session)、表示层(Presentation)、应用层(Application)
Socket与TCP、UDP
Socket: 简单来说是ip地址与端口的结合协议(RFC 793).
一种地址与端口的结合描述协议。
TCP/IP协议的相关API的总称;是网络API的集合实现.
涵盖了Stream socket /Datagram Socket
socket 的组成与作用:
在网络传输中用于唯一标识两个端点的链接。
端点:包括(ip+port)
4个要素:客户端的地址、客户端的端口、服务器的地址、服务器端口。
6. Socket的传输原理
Socket之TCP:
tcp是面向连接的通讯协议。
通过三次握手建立连接,通讯完成时要拆除连接。
由于TCP是面向连接的,所以只能用于端到端的通信。
Socket之UDP:
UDP是面向无连接进行通讯的。
UDP数据包括目的端口号和源端口号信息。
由于通讯时是不需要连接,所以可以是实现广播发送,并不局限于端到端。 java.net.Socket
Socket(套接字)封装了TCP协议的通讯细节,是的我们使用它可以与服务端建立网络链接,并通过 它获取两个流(一个输入一个输出),然后使用这两个流的读写操作完成与服务端的数据交互
java.net.ServerSocket
ServerSocket运行在服务端,作用有两个:
1:向系统申请服务端口,客户端的Socket就是通过这个端口与服务端建立连接的。
2:监听服务端口,一旦一个客户端通过该端口建立连接则会自动创建一个Socket,并通过该Socket与客户端进行数据交互。
7.Client-Server Application
TCP/IP协议中,两个进程间通信的主要模式为CS模型
主要的目的:协调网络中计算机资源、服务模式、进程间数据共享
常见的FTP、SMTP、HTTP
8.报文段
报文段是指TCP/IP协议网络传输过程中,起着路由导航作用。
可以查询各个网络路由网段、IP地址、交换协议等ip数据包。
报文段充当整个TCP/IP协议数据包的导航路由功能。
报文在传输过程中会不断的封装成分组、包、帧来传输。
封装的方式就是添加一些控制信息组成的首部,即报文头。
9.传输协议
一种约定,约束
约定大于配置,在网络传输中依然实用;网络的传输是健壮的稳定的,得益于基础的协议构成。计算机网络体系结构
网络层次结构模型 与 各层协议 的集合 个人理解:网络的物理结构+逻辑结构 & 使用约定
网络协议:使用约定 若不按规定使用,容易导致混乱
语法:用户数据与控制信息的结构与形式 怎么说
语义:控制信息、动作、响应的类型 说的是什么
时序:对事件实现顺序的详细说明 什么时候说
分层思想
连接过程过于复杂,按照不同的抽象层次,实现网络,高层使用低层服务时,无需考虑具体实现 类比编程时用现有的库
两种模型
OSI参考模型TCP/IP参考模型应用层应用层表示层应用层对话层应用层传输层传输层网络层网络层物理链路层物理链路层物理层物理层
TCP/IP网络参考模型的5个层次
应用层:网络层应用程序及其应用层协议存留的地方 对等体:消息 最高抽象层,只能看到交互的双方及交互协议 个人认为可以看做人与人之间按照约定方式进行交流
HTTP协议:超文本传输协议(用于实现Web文档的请求和转发)
SMTP协议:简单电子邮件传输协议
FTP协议:文件传输协议
Telnet协议:网络远程访问协议
传输层:提供客户端和服务器之间传输应用层报文的服务 对等体:段或用户数据报 次高抽象层,为交互双方提供信息传输服务 个人认为可以看做为人与人之间交流提供途径,如“写信”
TCP:面向连接的服务 管生又管养
UDP:无连接服务 管生不管养
网络层:按照运输层协议,提供主机之间传递数据报的服务 对等体:数据包 个人认为可以看做实现了信件在省份之间的收发服务
数据链路层 对等体:帧 个人认为可以看做实现了信件在城市之间的收发服务
物理层 对等体:位 个人认为可以看做实现了信件在具体邮局之间的收发服务
TCP/IP的一些基本概念
IP地址:连接到TCP/IP网络上的每台设备的唯一地址标识
端口(Port):每台设备中每个应用程序的唯一标识
套接字(Socket):通信端点,由IP地址+端口号组成
传输控制协议(TCP)
面向连接的保证可靠传输的协议
收发双方的一对socket建立连接后进行双向数据传输、
用户数据报协议(UDP)
无连接传输协议,无序,不一定安全,但简单效率高
将要传输目的地定义成数据报(Datagram) 在数据报中指明要到达的端点(Socket) 发送数据报
域名
服务器地址的别名
Java网络编程
通过流模式实现网络交互,一个接口同时拥有输入流和输出流 一个进程向端口输出流写数据,另一个进程在接口的输入流上读数据即可
Java提供的网络编程类
简记方法:
带URL的为面向应用层的类
带Socket的为面向运输层中TCP协议相关的类
带Datagram的为面向运输层中UDP协议相关的类
带Exception的为各种异常
领域类名面向应用层的类URL URLConnection面向运输层中与TCP协议相关的类Socket ServerSocket面向运输层中与UDP协议相关的类DatagramPakcet DatagramSocket MulticastSocket指向网络层的类InetAddress可能产生的异常BindException ConnectException MalformedURLException NoRouteToHostException ProtocolException SocketException UnknownHostException UnknownServiceException