Java Web 编程入门知识
2014-11-09 00:09
162 查看
Java SE 的内容基本都讲完了.
但是 Java一般用于网络编程, 就是所谓的web编程. Java SE讲的基本上都是本地程序的内容.
而Java web编程需要在两个程序中传输数据, 以后就是Java EE的前提知识了.
一. 什么是网络程序(Web Program)
以前Java SE 的内容将的都是java 或 面向对象的基本知识, 所编写的程序都是本地程序.
那么什么是网络程序呢.
定义很简单:
能够接受另一台计算机发过来的的数据或者能够向另1台计算机发送数据的程序就是网络程序.
为什么要强调另一台计算机呢,
因为在同一台计算中两个程序有很多方法互相通信(例如互相读写同1个本地文件), 但是这两个程序就不一定是网络程序了.
在同1层网络中, 每台主机都必须有1个唯一的ip地址.
ip地址是1个逻辑地址.
首先, 网络上传输的都是二进制数据, 所以一张照片是不能在网线上传输的.
通常来讲, 发送端程序会将这照片转化成字节数组, 然后把这个字节数组打包成若干个数据包(DatagramPacket).
然后把数据包1个1个地放向给B程序. B程序接收到数据包后再解封, 得到字节数组, 再还原成1张图片.
所以实际上网络上的数据是1个接1个的数据包在传输!
例如计算B同时运行着firefox 和 pidigin. B的网卡接受到计算机A的数据包, 那么B会将这个数据包分给Firefox 还是 Pidgin来处理?
为了解决这个问题, 就需要1个标签. 在同1台计算机(B)中, 每1个网络程序都必须分配1个唯一的标签.
例如Firefox 的标签是80, Pidgin的标签是9000.
而同样地, 计算机A发送数据包前, 必须为数据包贴上1个标签, 表示将这个数据包发给目标计算的哪个程序.
这个标签实际上是端口号码(port).
假如B网卡接受到1个数据包, 发现该数据包贴上的标签是80, 就会交给本地占用80端口的程序(Firefox).
所以计算A发送数据包前, 必须同时指定数据包的目标pid地址, 和目标程序(端口).
端口1个用16bit数字来表示的, 它的范围是0 ~ 65535, 1024 以下的端口保留给预定义的服务, 例如80是网页, 25是邮件发送.
oracle的默认端口是1521, tomcat默认的端口是8080.
一个防火墙开放了1个端口(例如8888), 并不是在墙上打开1个洞, 而是这个防火墙不会过滤掉 端口是8888的数据包!
一.协议定义:
为进行网络中的数据交换(通信)而建立的规则,标准或约定.
通俗来讲, 计算机A(发送方) 不会 关心 计算机B(接收方)的状态, 直接地把数据包发送出去.
也就是当计算机B不在线时, 数据包可能会被丢失.
TCP: 面向连接的可靠传输协议, 类似与打电话.
也就是所计算机A(发送方) 必须在发送数据包前 建立一条与计算B(接受方的) 连接请求, 在这条连接建立后, 才可以发送数据. 保证每个数据包都成功地发送到计算机B.
实际上Socket是美国伯克利大学在Unix上推出的1个工具, 程序猿使用这个工具可以很方便地访问TCP/IP. 从而开发各种网络程序.
随着Unix的推广, windows和java也引用了Socket这个编程模型.
下一遍文章会详细讲解基于Socket的UDP编程.
但是 Java一般用于网络编程, 就是所谓的web编程. Java SE讲的基本上都是本地程序的内容.
而Java web编程需要在两个程序中传输数据, 以后就是Java EE的前提知识了.
一. 什么是网络程序(Web Program)
以前Java SE 的内容将的都是java 或 面向对象的基本知识, 所编写的程序都是本地程序.那么什么是网络程序呢.
定义很简单:
能够接受另一台计算机发过来的的数据或者能够向另1台计算机发送数据的程序就是网络程序.
为什么要强调另一台计算机呢,
因为在同一台计算中两个程序有很多方法互相通信(例如互相读写同1个本地文件), 但是这两个程序就不一定是网络程序了.
二. 什么是ip 地址.
能够在网络上唯一表示1台计算的编号就是ip地址了, 这个大家都懂.在同1层网络中, 每台主机都必须有1个唯一的ip地址.
ip地址是1个逻辑地址.
三. 数据是怎样在网络上传输的.
例如计算机A发送1张照片给计算机B, 那么这张照片是如何在网络传输的.首先, 网络上传输的都是二进制数据, 所以一张照片是不能在网线上传输的.
通常来讲, 发送端程序会将这照片转化成字节数组, 然后把这个字节数组打包成若干个数据包(DatagramPacket).
然后把数据包1个1个地放向给B程序. B程序接收到数据包后再解封, 得到字节数组, 再还原成1张图片.
所以实际上网络上的数据是1个接1个的数据包在传输!
四. 什么端口号(Port)
一台计算机可以同时运行多个网络程序.例如计算B同时运行着firefox 和 pidigin. B的网卡接受到计算机A的数据包, 那么B会将这个数据包分给Firefox 还是 Pidgin来处理?
为了解决这个问题, 就需要1个标签. 在同1台计算机(B)中, 每1个网络程序都必须分配1个唯一的标签.
例如Firefox 的标签是80, Pidgin的标签是9000.
而同样地, 计算机A发送数据包前, 必须为数据包贴上1个标签, 表示将这个数据包发给目标计算的哪个程序.
这个标签实际上是端口号码(port).
假如B网卡接受到1个数据包, 发现该数据包贴上的标签是80, 就会交给本地占用80端口的程序(Firefox).
所以计算A发送数据包前, 必须同时指定数据包的目标pid地址, 和目标程序(端口).
端口1个用16bit数字来表示的, 它的范围是0 ~ 65535, 1024 以下的端口保留给预定义的服务, 例如80是网页, 25是邮件发送.
oracle的默认端口是1521, tomcat默认的端口是8080.
一个防火墙开放了1个端口(例如8888), 并不是在墙上打开1个洞, 而是这个防火墙不会过滤掉 端口是8888的数据包!
五.协议
一.协议定义:
为进行网络中的数据交换(通信)而建立的规则,标准或约定.二. 常见协议
UDP: UDP协议是无连接的, 不可靠的传输协议, 类似与写信.通俗来讲, 计算机A(发送方) 不会 关心 计算机B(接收方)的状态, 直接地把数据包发送出去.
也就是当计算机B不在线时, 数据包可能会被丢失.
TCP: 面向连接的可靠传输协议, 类似与打电话.
也就是所计算机A(发送方) 必须在发送数据包前 建立一条与计算B(接受方的) 连接请求, 在这条连接建立后, 才可以发送数据. 保证每个数据包都成功地发送到计算机B.
6. 套接字(Socket)
单屏名字很难理解.实际上Socket是美国伯克利大学在Unix上推出的1个工具, 程序猿使用这个工具可以很方便地访问TCP/IP. 从而开发各种网络程序.
随着Unix的推广, windows和java也引用了Socket这个编程模型.
下一遍文章会详细讲解基于Socket的UDP编程.
相关文章推荐
- linux程序设计入门----基础知识:linux下C语言编程基础知识
- 入门:PHP编程“数组”的基础知识
- linux下的c/c++编程——入门级知识
- java web mysql 入门知识讲解
- java web mysql 入门知识讲解
- linux操作系统下c语言编程入门 -- (1)基础知识
- java web开发入门必须要了解的基本知识
- linux下的c/c++编程——入门级知识
- 【Ogre编程入门与进阶】第二章 Ogre相关知识回顾
- GPU编程之CUDA(一)——入门知识
- 内核模块编程之入门(二)—必备知识
- 内核模块编程之入门(二)—必备知识
- 编程入门知识(新手必看)
- linux下的c/c++编程——入门级知识
- 入门:PHP编程“数组”的基础知识
- 入门:PHP编程“数组”的基础知识
- 编程入门知识(新手必看)
- 【D3D学习记录】入门3D编程的基本数学知识(2)-向量、线性空间和线性变换
- 【Linux2.6内核模块编程实例指导】内核模块编程之入门(二)必备知识
- ADAM-4117快速入门手册-4-20模块知识及编程