网络编程
网络编程从大的方面说就是对信息的发送到接收,中间传输为物理线路的作用。
网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的。中间最主要的就是数据包的组装,数据包的过滤,数据包的捕获,数据包的分析,当然最后再做一些处理,代码、开发工具、数据库、服务器架设和网页设计这5部分你都要接触。
汇编语言
汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。它同样需要编程者将每一步具体的操作用命令的形式写出来。
汇编程序通常由三部分组成:指令、伪指令和宏指令。汇编程序的每一句指令只能对应实际操作过程中的一个很细微的动作,例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,但汇编语言的优点也是显而易见的,用汇编语言所能完成的操作不是一般高级语言所能实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。
高级语言
高级语言主要是相对于 [2] 汇编语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语言,这些语言的语法、命令格式都各不相同。高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类:
解释类:执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码(机器语言),一边执行,因此效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器,但这种方式比较灵活,可以动态地调整、修改应用程序。
编译类:编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(* .OBJ)才能执行,只有目标文件而没有源代码,修改很不方便。大多数的编程语言都是编译型的,例如[Visual C++](https://baike.baidu.com/item/Visual C%2B%2B?fromModule=lemma_inlink)、[Visual Foxpro](https://baike.baidu.com/item/Visual Foxpro?fromModule=lemma_inlink)、Delphi等。
网络模型
网络模型:描述网络的结构原理和工作原理
OSI参考模型:七层
Internet网络模型:四层
网络协议:指定层上进行数据交换的规则。
Internet的网络层协议:IP协议;DNS协议(辅助协议)
套接字
套接字(Sockets):应用程序和 [3] 网络协议的接口。
Java Sockets:Java应用程序和网络协议的接口,提供若干个类的定义。
Java应用程序利用这些类继承网络协议的行为,实现网络通信。
TCP Sockets:使用TCP协议实现可靠的网络通信。
UDP Sockets:使用UDP协议实现效率较高的网络通信。
数据包
数据包是网络通信编程的一个重要概念,也称为组装包,指在应用层数据或报文按照一定事先规定好的规则整合的数据集合,实际操作包括组包(打包),数据包传送,解包。 组包(打包),指按照协议把零散的数据或报文按照组合起来,实际应用中,比如在C++编程中,往往定义一种新的数据类型用来存储数据包的结构。数据包传送,指数据包的电气物理传输。解包,指接收端对接收的数据进行解析,获得有用信息和数据。
数据包经常通过套接字来传送.
想要达到这个效果需要什么
- 定位一台网络上的主机:IP+端口,定位到这个计算机上的资源
- 找到主机,传输数据
javaweb 网页编程 b/s架构
网络编程 TCP/IP c/s架构
网络通信的要素
通信双方地址:
- ip
- 端口号
- 192.168.1.124:5900
规则:网络通信协议
- TCP/IP参考模型
OSI七层网络模型 | TCP/IP四层概念模型 | 对应网络协议 |
---|---|---|
应用层 | 应用层 | HTTP,TFTP,FTP,NFS,WAIS,SMTP |
表示层 | 应用层 | Telnet,Rlogin,SNMP,Gopher |
会话层 | 应用层 | SMTP,DNS |
传输层 | 传输层 | TCP,UDP |
网络层 | 网络层 | IP,ICMP,ARP,RARP,AKP,UUCP |
数据链路层 | 数据链路层 | FDDI,Ethernet,Arpanet,PDN,SLIP,PPP |
物理层 | 数据链路层 | IEEE 802.1A,IEEE802.2到IEEE802.11 |
小结:
- 网络编程中有两个主要问题
- 如何准确的定位到网络上一台或多台主机
- 找到主机之后如何通信
- 网络编程中的要素
- IP和端口号
- 网络通信协议 TCP UDP
- 万物皆对象
IP
ip地址:IntAddress
-
唯一定位一台网络计算机
-
127.0.0.1 本机
-
ip地址的分类
- IP地址分类
- IPV4 127.0.0.1,四个字节组成,0-255,42亿;30亿在北美,亚洲4亿,2011年就用尽了
- 128位,8个无符号整数!
- 公网(互联网)-私网(局域网)
- ABCD类
- 192.168.x.x,专门给组织内部使用的
- IP地址分类
-
域名
域名(英语:Domain Name),又称网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)。
由于IP地址具有不方便记忆并且不能显示地址组织的名称和性质等缺点,人们设计出了域名,并通过网域名称系统(DNS,Domain Name System)来将域名和IP地址相互映射,使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP地址数串。
package com.yaohua;
import java.net.InetAddress;
import java.net.UnknownHostException;
//测试IP
public class TestIntAddress {
public static void main(String[] args) throws UnknownHostException {
InetAddress inetAddress = InetAddress.getByName("127.0.0.1");
System.out.println(inetAddress);
InetAddress inetAddress2 = InetAddress.getLocalHost();
System.out.println(inetAddress2);
InetAddress inetAddress1 = InetAddress.getByName("www.baidu.com");
System.out.println(inetAddress1);
System.out.println(inetAddress1.getHostAddress());
System.out.println(inetAddress1.getCanonicalHostName());
System.out.println(inetAddress1.getHostAddress());
}
}
端口
端口表示计算机上的一个程序进程;
-
不同的进程有不同的端口号!用来区分软件!
-
被规定0-65535
-
TCP,IP:65535*2,单个协议下,端口号不能冲突
-
端口号分类
-
公有端口0-1023
- HTTP:80
- HTTPS:443
- FTP:21
- Telnet:23
-
程序注册端口:1024-49151,分配给用户或者程序
- Tomcat:8080
- Mysql:3306
- Oracle:1521
-
动态、私有:49152-65535
netstat -ano#查看所有的端口 netstat -ano|findstr "5900" #查看指定的端口 tasklist|findstr "8696" #查看指定端口的进程
-
package com.yaohua; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.UnknownHostException; //测试IP public class TestIntSocketAddress { public static void main(String[] args) throws UnknownHostException { InetSocketAddress inetSocketAddress = new InetSocketAddress("127.0.0.1", 8080); System.out.println(inetSocketAddress); System.out.println(inetSocketAddress.getAddress()); System.out.println(inetSocketAddress.getPort()); System.out.println(inetSocketAddress.getHostName()); } }
-
通信协议
通信协议是指双方实体完成通信或服务所必须遵循的规则和约定。通过通信信道和设备互连起来的多个不同地理位置的数据通信系统,要使其能协同工作实现信息交换和资源共享,它们之间必须具有共同的语言。交流什么、怎样交流及何时交流,都必须遵循某种互相都能接受的规则。这个规则就是通信协议。
网络通信协议:网络通信协议是一种网络通用语言,为连接不同操作系统和不同硬件体系结构的互联网络提供通信支持,是一种网络通用语言。
三要素:
- 语义,解释控制信息每个部分的意义。它规定了需要发出何种控制信息,以及完成的动作与做出什么样的响应。
- 语法,用户数据与控制信息的结构与格式,以及数据出现的顺序。
- 时序,对事件发生顺序的详细说明。
可以形象地把这三个要素描述为:语义表示要做什么,语法表示要怎么做,时序表示做的顺序。
常见协议:TCP/IP协议、IPX/SPX协议、NetBEUI协议等。
- TCP/IP协议
TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议) 协议具有很强的灵活性,支持任意规模的网络,几乎可连接所有服务器和工作站。在使用TCP/IP协议时需要进行复杂的设置,每个结点至少需要一个“IP地址”、一个“子网掩码”、一个“默认网关”、一个“主机名”,对于一些初学者来说使用不太方便。
- IPX/SPX及其兼容协议
IPX/SPX(Internetwork Packet Exchange/Sequences Packet Exchange,网际包交换/顺序包交换)是Novell公司的通信协议集。IPX/SPX具有强大的路由功能,适合于大型网络使用。当用户端接入NetWare服务器时,IPX/SPX及其兼容协议是最好的选择。但在非Novell网络环境中,IPX/SPX一般不使用。
- NetBEUI协议
NetBEUI(NetBi