2021-09-07

**

**

学习总结

Java网络编程概念

学习产出:

网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。

java.net 包中 J2SE 的 API

包含有类和接口,它们提供低层次的通信细节。你可以直接使用这些类和接口,来专注于解决问题,而不用关注通信细节。

java.net 包中提供了两种常见的网络协议的支持:

TCP:TCP(英语:Transmission Control Protocol,传输控制协议)

是一种面向连接的、可靠的、基于字节流的传输层通信协议,TCP 层是位于 IP 层之上,应用层之下的中间层。TCP
保障了两个应用程序之间的可靠通信。通常用于互联网协议,被称 TCP / IP。

UDP:UDP (英语:User Datagram Protocol,用户数据报协议),位于 OSI

模型的传输层。一个无连接的协议。提供了应用程序之间要发送数据的数据报。由于UDP缺乏可靠性且属于无连接协议,所以应用程序通常必须容许一些丢失、错误或重复的数据包。

Socket 编程:这是使用最广泛的网络概念,它已被解释地非常详细。

URL 处理

1、计算机网路基础概念

计算机网络是指:将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。

从逻辑功能上看,计算机网络是以传输信息为基础目的,用通信线路将多个计算机连接起来的计算机系统的集合,一个计算机网络组成包括传输介质和通信设备。

虽然网络类型的划分标准各种各样,但是从地理范围划分是一种大家都认可的通用网络划分标准。按这种标准可以把各种网络类型划分为局域网(LocalArea Network, LAN)、城域网(Metropolitan Area Network,MAN)、广域网(Wide Area Network,WAN)和互联网(Internet,由无数的 LAN 和 WAN 组成)四种。

2、网络编程模式

在网络通信中主要有两种模式的通信方式:客户机/服务器(Client/Server)模式,简称为C/S 模式和浏览器/服务器(Browser/Server)模式,简称 B/S 模式。

  1. Client/Server 模式

客户机、服务器以及网络三者之间的关系图,使用这种模式的程序很多,例如:qq、游戏等,需要在本机上安装一个客户端,服务器运行在开发公司的机房。

使用 C/S 模式的程序,在开发时需要分别针对客户端和服务器端进行专门开发。

优点:由于客户端是专门开发的,表现力会更强。缺点:通用性差,维护压力较大。

  1. Browser/Server 模式

用户使用浏览器作为客户端的这种模式叫作浏览器/服务器模式。

优点:只需开发服务器端即可,开发压力较小,不需要维护客户端。缺点:对浏览器的限制比较大,表现力不强。

3、网络协议

为了减少网络设计的复杂性,绝大多数网络采用分层设计方法。分层设计方法,就是按照信息的流动过程将网络的整体功能分解为一个个的功能层,不同机器上的同等功能层之间采用相同的协议,同一机器上的相邻功能层之间通过接口进行信息传递。

网络上的计算机之间要通信就必须有一些约定,这些约定被称为网络通信协议。不同的计算机之间必须使用相同的通信协议才能进行通信。

4 网络模型 OSI七层参考模型和TCP/IP四层参考模型。

开放系统互连参考模型 (Open System Interconnect 简称OSI)是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型,为开放式互连信息系统提供了一种功能结构的框架。

OSI先有模型后有协议,先有标准后进行实践;而TCP/IP则相反,先有协议和应用再提出了模型,且是参照的OSI模型。

TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议):TCP/IP协议是一个协议集合。所以统称为TCP/IP。在 TCP/IP 中包含一系列用于处理数据通信的协议:

TCP (传输控制协议) - 应用程序之间通信

UDP (用户数据包协议) - 应用程序之间的简单通信

IP (网际协议) - 计算机之间和计算机网络之间的通信

ICMP (因特网消息控制协议) - 针对错误和状态

DHCP (动态主机配置协议) - 针对动态寻址

5 TCP(transmission control protocol)传输控制协议协议:

TCP 用于应用程序之间的通信。当应用程序通过TCP与另一个应用程序通信时,它会发送一个通信请求。这个请求必须被送到一个确切的地址。在双方“三次握手”之后,TCP 将在两个应用程序之间建立一个全双工 (full-duplex) 的通信。

这个全双工的通信将占用两个计算机之间的通信线路,直到它被一方或双方关闭为止,关闭时会经历四次挥手。

(1)TCP三次握手

所谓三次握手(Three-Way Handshake)即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。

在socket编程中,这一过程由客户端执行connect来触发,整个流程如下图所示:

SYN:同步标志。表明同步序列编号栏有效。

ACK:确认标志。确认值(Acknowledgement),为1便是确认连接。

ack:确认编号(Acknowledgement Number),即接收到的上一次远端主机传来的seq然后+1,再发送给远端主机。提示远端主机已经成功接收上一次所有数据。
FIN:结束标志。

1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。

2)第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。

3)第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态。

完成三次握手,随后Client与Server之间可以开始传输数据了。

6 UDP(user data protocol)用户数据报协议:

Internet 协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol)。

UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。

UDP与TCP区别:

TCP :面向连接(经历三次握手)、传输可靠(保证数据正确性,保证数据顺序)、用于传输大量数据(流模式)、速度慢,建立连接需要开销较多(时间,系统资源)。

UDP:面向非连接、传输不可靠(丢包[数据丢失])、用于传输少量数据(数据报包模式)、速度快。发送端和接收端

7 IP(Internet Protocol)协议

IP协议又称网际协议,是TCP/IP协议的核心。

它负责Internet上网络之间的通信,并规定了将数据报从一个网络传输到另一个网络所应遵循的规则。

IP协议不但定义了数据传输时的基本单元和格式,还定义了数据报的递交方法和路由选择。

此外,在TCP/IP网络中,主机之间进行通信所必需的地址,也是通过IP协议来实现的。

(1)IP地址

是指分配给用户上网使用的网际协议(英语:InternetProtocol,IP)的设备的数字标签。

IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。

在TCP/IP协议中,这个标识号就是IP地址,它可以唯一标识一台计算机,

目前,IP地址广泛使用的版本是IPv4,它是由4个字节大小的二进制数来表示,由于二进制形式表示的IP地址非常不便记忆和处理,因此通常会将IP地址写成十进制的形式,每个字节用一个十进制数字(0-255)表示,数字间用符号“.”分开,如 “192.168.1.100”。

随着计算机网络规模的不断扩大,对IP地址的需求也越来越多,IPV4这种用4个字节表示的IP地址面临枯竭,因此IPv6 便应运而生了,IPv6使用16个字节表示IP地址,它所拥有的地址容量是IPv4的接近8×1028倍,达到2128-1个(全零的不能用),这样就解决了网络地址资源数量不够的问题。

8 端口号

通过IP地址可以连接到指定计算机,但如果想访问目标计算机中的某个应用程序,还需要指定端口号。

在计算机中,不同的应用程序是通过端口号区分的。

端口号是用两个字节(16位的二进制数)表示的,它的取值范围是065535,其中,01023之间的端口号用于一些知名的网络服务和应用,用户的普通应用程序需要使用1024以上的端口号,从而避免端口号被另外一个应用或服务所占用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值