网络编程、InetAddress、UDP和TCP

一、网络编程

1.网络:全称:计算机网络,由在不同的地理位置、不同的计算机互联形成的一个计算机系统

2.网络编程:在已经拥有的完备成熟的网络系统中,在整个系统上,使用网络进行编程,是针对应

用层的设计活动

3.计算机网络七层协议

①应用层:与其他计算机进行通讯的一个应用,它是对应应用程序的通信服务的

②表示层:定义数据格式及加密

③会话层:它定义了如何开始、控制和结束一个会话,包括对多个双向消息的控制和管理,以便在

只完成连续消息的一部分时可以通知应用,从而使表示层看到的数据是连续的,在某些情况下,如

果表示层收到了所有的数据,则用数据代表表示层

④传输层:选择差错恢复协议还是无差错恢复协议,及在同一主机上对不同应用的数据流的输入进

行复用,还包括对收到的顺序不对的数据包的重新排序功能

⑤网络层:对端到端的包传输进行定义,它定义了能够标识所有结点的逻辑地址,还定义了路由实

现的方式和学习的方式。为了适应最大传输单元长度小于包长度的传输介质,网络层还定义了如何

将一个包分解成更小的包的分段方法

⑥数据链路层:它定义了在单个链路上如何传输数据。这些协议与被讨论的各种介质有关

⑦物理层:OSI的物理层的规范是有关传输介质的特性,这些规范通常也参考了其他组织指定的标

准。连接头、帧、帧的使用、电流、编码及光调制等都属于各种物理层规范中的内容。物理层常用

多个规范完成对所有细节的定义

4.四层协议

①链路层:有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中

对应的网络接口卡。他们一起处理与电缆(或其他任何传输媒介)的物理接口细节

②网络层:有时也称作互联网层,处理分组在网络中的活动,例如分组的选路。在TCP/IP协议族

中,网络层协议包括IP协议(网际协议),ICMP协议(Internet互联网控制报文协议),以及

IGMP协议(Internet组管理协议)

③运输层:主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议族中,有两个互不相

同的传输协议:TCP(Transmission Control Protocol)和UDP(User Data Protocol)。TCP为两

台主机提供高可靠性的数据通信。它所作的工作包括把应用程序交给它的数据分成合适的小块交给

下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可

靠性的端到端的通信,因此应用层可以忽略所有这些细节。而另一方面,UDP则为应用层提供一种

非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报

能到达另一端。任何必须的可靠性必须由应用层来提供,这两种运输层协议分别在不同的应用程序

中有不同的用途

④应用层:负责处理特定的应用程序细节。几乎各种不同的TCP/IP实现都会提供下面这些通用的

应用程序:Talnet远程登录、FTP文件传输协议、SMTP简单邮件传送协议、SNMP简单网络管理

协议

二、网络编程三要素

(一)IP地址

1.IP地址是计算机在网络中的唯一标志

2.分类

(1)IPV4

①构成:点分十进制的构成,有4个0-255之间的数组构成,来表示一个IP地址,4个字节即32位,

能够表示约40亿个地址

②四个字节中,有2个字节或者3个字节表示所在子网

③一个字节能表示0-255之间的256个数字,但是不能全用

④0表示子网网号:192.168.5.0,就当表示当前子网

⑤255表示广播地址:广播地址发送的内容所在子网内的所有设备都能接收到

⑥特殊:127.0.0.1表示本地回环地址,可以访问本机

⑦ping:可以查看网络是否联通

(2)IPV6

①构成:由8组数字组成,每组数字都是4个16进制数字,每个数字有16种状态,32个数字,最多

能表示16^32个IP地址

②号称能给地球上的每一粒沙子都拥有一个IP地址

(二)端口号

1.也就是一个数字,用于标记一台电脑中的默认进程

2.取值范围:0-65535

3.意味着计算机中至多能够运行65535个进程,当程序运行时,计算机会分配一个独一无二的端口

号,我们通过端口号就可以找到执行的进程,当进程结束时,端口号就会被回收

4.分配:可以是计算机随机分配,也可以是用于分配

5.常用的端口号

(1)操作系统:0-1024

(2)MySQL:3306

(3)Tomcat:8080

(4)QQ:4000

(5)Oracle:1521

(三)通信协议

1.用于定义通信双方在交互时,对信息的封装和解析的规则,就是协议

2.网络分工:每一层都可以做独立的事情

(1)应用层:http、https协议等(规定数据如何封装以及解析)

(2)传输层:UDP协议和TCP协议(更多关注的是端对端的传输)

(3)网络层:IP地址(如何完成两台设备之间的传输)

(4)物理层:底层的硬件设备,数据完整性的校验

三、InetAddress

1.InetAddress类的对象表示IP地址

2.对象获取方式

(1)getByName(String host):根据主机名称返回对象的ip地址

(2)getByAddress(byte【】 addr):给定装有ip地址的数组,返回InetAddress类对象

(3)getAllByName(String host):根据主机名获取所有当前类型对象的数组

(4)getLocalHost():获取本地主机主机名和IP地址的对象

3.常用方法

(1)getHostName():获取主机名称

(2)getAddress():获取IP地址的字节数组

(3)toString():获取主机名称和IP地址转为字符串

四、UDP和TCP

(一)概述

1.UDP和TCP协议都属于传输层,都是端到端的协议

2.区别

(1)UDP协议:面向无连接。像发短信,寄快递,效率高,不安全,先发送的消息未必收到,只

区分发送端和接收端,而不是像TCP那样区分客户端和服务端

(2)TCP协议:面向连接。像打电话。先发送的消息一定先到达,安全,效率低,区分客户端和

服务器端。在连接时,要经历三次握手,在断开时需要经历四次挥手

3.三次握手

(1)第一次握手:建立连接时,客户端发送syn包(seq=j)到服务器,并进入SYN_SENT状态,

等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)

(2)第二次握手:服务器收到syn包,必须确认客户端的SYN(ack=j+1),同时自己也发送一个

SYN包(seq=k),即SYN+ACK包,此时服务器进入SYN_RECV状态

(3)第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手

4.四次挥手

(1)第一步:当主机A的应用程序通知TCP数据已经发送完毕时,TCP向主机B发送一个带有FIN

附加标记的报文段(FIN表示英文finish)

(2)第二步,主机B收到这个FIN报文段之后,并不立即用FIN报文段回复主机A,而是先向主机A

发送一个确认序号ACK,同时通知自己相应的应用程序:对方要求关闭连接(先发送ACK的目的是

为了防止在这段时间内,对方重传FIN报文段)

(3)第三步,主机B的应用程序告诉TCP:我要彻底的关闭连接,TCP向主机A发送一个FIN报文

(4)第四步,主机A收到这个FIN报文段后,向主机B发送一个ACK表示连接彻底释放

(二)Socket编程

1.Socket:是两台计算机之间的通信端,类似生活中的快递站、邮局、码头

2.Socket也叫做套接字,套接字编程:网络编程

(1)UDP中要是用到的套接字:DatagramSocket

(2)TCP中,客户端套接字使用Socket,服务端使用ServerSocket和Socket

(三)TCP编程

1.客户端和服务端区别

(1)客户端使用Socket的构造方法直接创建Socket对象

(2)服务器端不能直接使用Socket对象创建通信点对象,而是通过ServerSocket对象,从端口捕

获客户端的响应,专门为这个客户端生成一个Socket对象

2.构造方法

(1)Socket(InetAddress address, int port):创建一个通信点对象,专门用于和制定IP的主机中指

定进程进行通信

(2)只要这个对象创建成功,就说明这个连接已经建立好了,也就是说客户端已经连接上服务器

端,也就是已经获取到了服务器返回的响应

(3)创建对象的过程,就是在请求和服务器连接的过程

(4)ServerSocket(int port):创建一个服务器通信点对象

(5)ServerSocket要配合accept()方法使用

(6)accept():是专门用于接收客户端请求,并且返回一个对应的Socket对象

3、传输操作

(1)getOutputStream():返回此套接字的输出流

(2)getInputStream():返回此套接字的输入流

(3)一旦获取到IO对象,就变成了以IO的方式传输

4、关系

(1)客户端发送请求给服务器:客户端将请求从本机内存输出到网络,要用输出流

(2)服务器端接收客户端传来的响应:服务器将网络中的请求读取到服务器的内存中,要用输入

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值