java 网络(update20201118)

网络类型:

计算机网络,按照不同的分类方式来划分,可以分为不同的类型。

按照网络的地理位置可分为:局域网(LAN),城域网(MAN),广域网(WAN)。目前局域网和广域网是网络的特点。局域网是组成其他两种类型网络的基础,城域网一般都加入了广域网。广域网典型的代表是 Internet。

按照服务方式可以分为:客户机 / 服务器网络(Client / Server),对等网(Peer-to-Peer)。

通信协议:

通信协议即网络中传递、管理信息的一些规范。如果人与人之间交流需要遵循特定的语言定义一样,计算机之间的通信也需要共同遵守一定的规则,这些规则就称为网络协议。网络协议的划分:

物理层:以太网 · 调制解调器 · 电力线通信(PLC) · SONET/SDH · G.709 · 光导纤维 · 同轴电缆 · 双绞线等。
数据链路层:Wi-Fi(IEEE 802.11) · WiMAX(IEEE 802.16) ·ATM · DTM · 令牌环 · 以太网 ·FDDI · 帧中继 · GPRS · EVDO ·HSPA · HDLC · PPP · L2TP ·PPTP · ISDN·STP 等。
网络层协议:IP (IPv4 · IPv6) · ICMP· ICMPv6·IGMP ·IS-IS · IPsec · ARP · RARP等。
传输层协议:TCP · UDP · TLS · DCCP · SCTP · RSVP · OSPF 等。
应用层协议:DHCP ·DNS · FTP · Gopher · HTTP· IMAP4 · IRC · NNTP · XMPP ·POP3 · SIP · SMTP ·SNMP · SSH ·TELNET · RPC · RTCP · RTP ·RTSP· SDP · SOAP · GTP · STUN · NTP· SSDP · BGP · RIP 等。

什么是 TCP/IP?

TCP/IP 是供已连接因特网的计算机进行通信的通信协议。
TCP/IP 指传输控制协议/网际协议 (Transmission Control Protocol / Internet Protocol)。
TCP/IP 定义了电子设备(比如计算机)如何连入因特网,以及数据如何在它们之间传输的标准。

在 TCP/IP 内部

在 TCP/IP 中包含一系列用于处理数据通信的协议:

  • TCP (传输控制协议) - 应用程序之间通信
  • UDP (用户数据包协议) - 应用程序之间的简单通信
  • IP (网际协议) - 计算机之间的通信
  • ICMP (因特网消息控制协议) - 针对错误和状态
  • DHCP (动态主机配置协议) - 针对动态寻址

TCP 使用固定的连接

TCP 用于应用程序之间的通信。
当应用程序希望通过 TCP 与另一个应用程序通信时,它会发送一个通信请求。这个请求必须被送到一个确切的地址。在双方“握手”之后,TCP 将在两个应用程序之间建立一个全双工 (full-duplex) 的通信。
这个全双工的通信将占用两个计算机之间的通信线路,直到它被一方或双方关闭为止。
UDP 和 TCP 很相似,但是更简单,同时可靠性低于 TCP。

IP 是无连接的

IP 用于计算机之间的通信。
IP 是无连接的通信协议。它不会占用两个正在通信的计算机之间的通信线路。这样,IP 就降低了对网络线路的需求。每条线可以同时满足许多不同的计算机之间的通信需要。
通过 IP,消息(或者其他数据)被分割为小的独立的包,并通过因特网在计算机之间传送。
IP 负责将每个包路由至它的目的地。

IP 路由器

当一个 IP 包从一台计算机被发送,它会到达一个 IP 路由器。
IP 路由器负责将这个包路由至它的目的地,直接地或者通过其他的路由器。
在一个相同的通信中,一个包所经由的路径可能会和其他的包不同。而路由器负责根据通信量、网络中的错误或者其他参数来进行正确地寻址。

TCP/IP

TCP/IP 意味着 TCP 和 IP 在一起协同工作。
TCP 负责应用软件(比如你的浏览器)和网络软件之间的通信。
IP 负责计算机之间的通信。
TCP 负责将数据分割并装入 IP 包,然后在它们到达的时候重新组合它们。
IP 负责将包发送至接受者。

TCP / IP 是 Internet 的基础协议,也是一种计算机数据打包和寻址的标准方法。如果访问 Internet,则必须在网络协议中添加 TCP / IP 协议。IP 协议只保证计算机能发送和接收数据,而 TCP 协议则提供一个可靠的、可流控的、全双工的信息流传输服务。虽然 TCP 和 IP 这两个协议的功能不尽相同,也可以分开单独使用。但只有两者的结合,才能保证 Internet 在 复杂的情况下正常运行。

Java 网络编程

Java 中有关网络方面的功能都定义在 java.net 包中:

InetAddress 类:地址是网络通信的基础,在 Java 中使用 InetAddress 类来封装 IP 地址和该地址的域名。InetAddress 类无构造方法,不能直接创建对象,但可以通过该类的静态方法创建一个 InetAddress 对象或者 InetAddress 数组。

URL 类:Java 将 URL 封装成 URL 类,可以通过 URL 对象记录下完整的 URL 信息。http://www.mhttp.com:8080/index.html 是一个合法的 URL 示例。一个完整的 URL 由协议名、主机名(IP)、端口号和文件路径组成。URL 类的构造方法都声明抛出异常 MalformedURLException,因此构造 URL 对象时,需要对此进行异常处理。

URLConnection 类:通过 URL 类的方法 openSteam(),只能从网络上读取数据,如果需要输出数据,此时就要用到 URLConnection 类。URLConnection 是一个抽象类,代表与 URL 指定的数据源的动态连接,提供比 URL 类更强的服务器交互控制,运行用 POST 或 PUT 或其他 HTTP 请求方法将数据送到服务器。

两种最常用的 HTTP 方法是:GET 和 POST。

HTTP(HyperText Transfer Protocol)是网络应用层的协议,建立在TCP/IP协议基础之上。HTTP使用可靠的TCP连接,默认端口为80,目前最新的版本为1.1。
HTTP 的工作方式是客户机与服务器之间的请求(Request)-应答(Response)协议,设计目的是保证客户机与服务器之间的通信。在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST。

GET - 从指定的资源请求数据。
POST - 向指定的资源提交要被处理的数据

GET 方法
请注意,查询字符串(名称/值对)是在 GET 请求的 URL 中发送的:
/test/demo_form.asp?name1=value1&name2=value2

POST 方法
请注意,查询字符串(名称/值对)是在 POST 请求的 HTTP 消息主体中发送的:
POST /test/demo_form.asp HTTP/1.1
Host: w3schools.com
name1=value1&name2=value2

比较 GET 与 POST

下面的表格比较了两种 HTTP 方法:GET 和 POST。

 GETPOST
后退按钮/刷新无害数据会被重新提交(浏览器应该告知用户数据会被重新提交)。
书签可收藏为书签不可收藏为书签
缓存能被缓存不能缓存
编码类型application/x-www-form-urlencodedapplication/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。
历史参数保留在浏览器历史中。参数不会保存在浏览器历史中。
对数据长度的限制是的。当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。无限制。
对数据类型的限制只允许 ASCII 字符。没有限制。也允许二进制数据。
安全性

与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。

在发送密码或其他敏感信息时绝不要使用 GET !

POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。
可见性数据在 URL 中对所有人都是可见的。数据不会显示在 URL 中。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值