网络编程
网络编程的基础知识
1. 网络协议与TCP/IP
a) TCP/IP广为人知,广泛使用。
2. IP地址和端口号
a) 作为不同的电脑在Internet上的地址,IPv4(4个字节表示),IPv6(16个字节表示)。
b) 本地IP地址:127.0.0.1。可以检查本地的TCP/IP协议是否正确安装。
c) 端口号用两个字节表示,用于区分不同的网络应用程序。范围为0~65535,0~1023 之间的端口数用于一些知名的网络服务和应用。
3. UDP与TCP
a) TCP,传输控制协议(Transmission Control Protocol),是面向连接的通信协议。不 容易丢失信息。
b) UDP,用户数据报协议(User Datagram Protocol),是无连接通信协议。容易丢失信 息。
TCP、UDP的数据帧格式简图:
协议类型|源IP|目标IP|源端口|目标端口|帧序号|帧数据 (协议类型用于区分TCP, UDP)。
Socket
1. Socket是网络驱动层提供给应用程序编程的接口和一种机制。
2. 可以把Socket比喻城市一个港口码头。应用程序只要把货物放到港口码头上,就算完成了货物的运送。应用程序只需等待货物到达码头后,将货物取走。
3. Socket在应用程序中创建,通过一种绑定机制与驱动程序建立关系,告诉自己所对应的IP和Port。
Socket数据发送过程
应用程序产生Socket调用bind将Socket的信息通知给驱动程序,应用程序将要发送的数据发送给Socket。驱动程序从Socket取出数据并通过网卡发送出去。
Java中的网络编程类
1. java.net包中
2. DatagramSocket类用于UDP通信。
3. ServerSocket类用于TCP通信的服务器端
4. Socket类用于TCP通信的服务器端和客户端。
私有IP通过网卡代理上网的原理
1.
私有IP首先发送请求到网卡代理,网卡代理再把请求转发到Internet上,Internet在将请求转发到具体的IP地址。然后具体的IP地址将响应也按相同方式发回。
TCP网络程序工作原理
1. 客户端发出连接,服务器接受新的请求并创建新的Socket,客户端Socket与服务器端Socket建立专线连接。
检测和解决端口冲突的问题
1. 使用netstat命令查看当前使用的TCP端口号。
2. 通过一个配置参数来制定TCP服务器程序所使用的端口号。
URL
1. URL的基本组成:协议、主机名、端口号、资源名。
http://www.it315.org:8080.index.html
HTTP协议的会话过程
1. HTTP1.0建立一次连接只能进行一次请求和相应,想要继续发送请求,必须再次建立连接。
2. HTTP1.1改进了连接。建立一次连接,能够进行多次请求和相应,提高了数据传输的效率。
HTTP相应消息
1. 一个完整的相应消息包括:一个状态行、若干消息头、以及实体内容。
2. 几个HTTP消息头:
a) Connection:用于处理完本次请求/相应后,客户端与服务器是否继续保持连接。设置值可以为Keep-Alive和close。
b) Accept-Language:用于指出客户机期望服务器返回的文档所使用的国家语言,可以指定多个以逗号分隔的国家语言。
c) Content-Length:用于表示实体内容的长度(字节数)。
d) Range:用于指定服务器只需返回文档中的部分内容及内容范围,有以下几种使用格式:
i. Range:bytes=100-599
ii. Range:bytes=100-
iii. Range:bytes=-100
工厂模式的工作原理
1. 一个工厂类有一个方法能够返回实现了同一个接口的类的实例,这个方法还可以通过配置文件传递参数来指定要创建哪个类的实例对象。这个工厂类就能够不停的生产出想要的对象。作用:每当有新的类需要添加,只需让这个类实现固定的接口,并修改配置文件的参数即可,增强了程序的可维护性和可扩展性。