《Socket套接字》PPT课件.ppt_第1页
《Socket套接字》PPT课件.ppt_第2页
《Socket套接字》PPT课件.ppt_第3页
《Socket套接字》PPT课件.ppt_第4页
《Socket套接字》PPT课件.ppt_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第六章 TCP Socket套接字,关键字,TCP: Transmission Control Protocol 传输控制协议; 套接字:简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程, 由IP和PORT组成; Socket和ServerSocket: Java中关于TCP Socket的两个类,分别用于客户端连接和服务器监听。,本章内容,1. 套接字 2. Windows下端口查看 3. Java下的Socket,6.1 套接字,套接字,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程; 区分不同应用程序进程间的网络通信和连接,主要有3个参数:通信的目的IP地址、使用的传输层协议(TCP或UDP)和使用的端口号。Socket原意是 “插座”。通过将这3个参数结合起来,与一个“插座”Socket绑定,应用层就可以和传输层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。,TCP/IP层次结构,TCP/IP协议中提出了端口(port)的概念,用于标识网络主机上通信的进程。 端口实际上是一个抽象的软件结构(包括一些数据结构和I/O缓冲区)。应用程序(进程)通过系统调用与某端口建立关联(binding)后,传输层传给该端口的数据都被相应的应用进程所接收。 #端口又是应用进程访问传输服务的入口点SAP。,端口,应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。 多个TCP连接或多个应用程序进程可能需要通过同一个 TCP协议端口传输数据。 为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCPIP协议交互提供了称为套接字(Socket)的接口。,TCP/IP体系结构上三层,端口的实现 端口号:长度为16bit (065535) 不同的OS,实现上有差异; 仅具有本地意义; 端口的分类 熟知端口:01023,为常用的应用指定的固定值 一般端口:102465535,一般程序使用 SOCKET=(IP,Port),TCP,Port Numbers,F T P,Transport Layer,T E L N E T,D N S,S N M P,T F T P,S M T P,UDP,Application Layer,21,23,25,69,161,R I P,520,53,Internet常用端口号,91,1500,91,,1500,IP地址,端口号,SOCKET,总结: 穿越因特网从一个端点发送信息到另外一个端点,需要三种不同的地址:MAC、IP、Port 指明哪个网络的哪个点(主机、网卡)上的哪个应用进程产生或接收的数据,:80/index.html 该URL说明指定服务器上提供了WEB服务, 采用TCP协议进行数据传输 这台服务器的DNS名称为WWW.XIYOU.EDU.CN() 端口为: 80,在JAVA程序设计中,采用TCP方式通信,使用Socket类实现 客户端:Socket(, 1080); 创建指向目的主机的1080端口发起连接请求。 服务器端:SocketServer(1080); 一直监听1080端口是否有数据到达 采用UDP方式,使用DatagramSocket类实现连接,端口,TCP状态应用举例, 查看端口 Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。 netstat a 本选项显示一个所有的有效连接信息列表,包括已建立的连接(ESTABLISHED),也包括监听连接请求(LISTENING)的那些连接。 netstat n 显示所有已建立的有效连接。,端口,TCP状态应用举例, 查看端口,端口,TCP状态应用举例, 查看端口要注意的问题 1、知道本机开了那些端口,也就是可以进入到本机的“门”有几个,都是谁开的? 2、目前本机的端口处于什么状态,是等待连接还是已经连接,如果是已经连接那就要特别注意看连接是个正常连接还是非正常连接(木马等)? 3、目前本机是不是正在和其它计算机交换数据,是正常的程序防问到一个正常网站还是访问到一个陷阱?,端口,TCP状态应用举例, 服务端口的状态变化 1、 LISTENING状态 在主机0启动FTP服务后首先处于侦听状态。即端口是开放的,等待连接,但还没有被连接。就像你房子的门已经敞开的,但还没有人进来。 TCP :21 :0 LISTENING 2、ESTABLISHED状态 现在从这台计算机访问0的FTP服务。端口状态变为ESTABLISHED。意思已建立连接,两台机器正在通信。 TCP 0:21 :3009 ESTABLISHED,端口,TCP状态应用举例, 服务端口的状态变化 1、 CLOSE WAIT状态 结束了这次连接。端口状态变为CLOSE WAIT状态说明21端口曾经有客户访问过,但访问结束了。 TCP 0:21 :3009 CLOSE_WAIT,端口,TCP状态应用举例, 客户端口的状态变化 1、SYN_SENT状态 当要访问其它的计算机的服务时首先要发连接请求信号给该端口,此时状态为SYN_SENT,如果连接成功了就变为ESTABLISHED,此时SYN_SENT状态非常短暂。 TCP 0:1035 49:80 SYN_SENT,端口,TCP状态应用举例, 客户端口的状态变化 2、ESTABLISHED状态 本机正在访问某网站。发现一个地址有许多ESTABLISHED,这是正常的,网站中的每个内容比如图片、flash等都要单独建立连接。,端口,TCP状态应用举例, 客户端口的状态变化 3、TIME_WAIT状态 现在从这台计算机结束访问0的FTP服务。 TCP :3009 0:21 TIME_WAIT,JAVA中的套接字,TCP: Socket类: 建立一个客户端标识 ServerSocket类: 建立一个服务器端标识 UDP: DatagramSocket类: 建立对等端标识 DatagramPacket类: 建立一个数据包 MulticastSocket类: 建立一个组播端标识,TCP下的套接字类,Socket类: 建立一个客户端标识 ServerSocket类: 建立一个服务器端标识,Socket类,Socket类,其常用构造方法: protected Socket() throws IOException public Socket(InetAddress addr, int port) throws IOException public Socket(String host, int port) throws IOException 向某指定主机的 指定端口发出连接请求 Socket sc1 = new Socket(, 80); Socket sc2 = new Socket(, 80);,Socket类常用方法,Public void close() InetAddress getInetAddress() InetAddress getLocalAddress() InputStream getInputStream() OutputStream getOutputStream() Int getPort(),ServerSocket类,用于服务器端建立一个监听端口 其常用构造方法 ServerSocket()throws IOException ServerSocket(int port) throws IOException ServerSocket(int port, int backlog) throws IOException ServerSocket(int port, int backlog, InetAddress bindAddr) throws IOException 监听本地某个指定的端口(即本软件进程所使用的端口) ServerSocket ss0 = new ServerSocket(80);,ServerSocket类,常用方法,public Socket accept() 服务器接收客户端连接请求 public void close() InetAddress getInetAddress() int getLocalPort() getOutputStream() getInputStream(),客户/服务器通信,服务器Socket,Listening,Accept客户,Input/Output,Close,客户Socket,Output/Input,Close,Server,Client,例程,例exp6_01.java 服务器端 例exp6_02.java 客户端 例exp6_03.java 通信协议的,监听指定端口,Int port = 8888; ServerSocket myService = null; Try myService = new ServerSocket(port); catch(IOException e) System.out.print(e.toString(); ,客户端发出连接请求,Socket myClient = null; try myClient = new Socket(“host”, port); catch(UnknownHostException e) System.out.print(e.toString(); catch(IOException e1) System.out.print(e1.toString(); ,服务器接受客户端请求,Socket serviceSocket = null; try serviceSocket = myService.accept(); catch(IOException e) System.out.print(e.toString(); ,客户端创建InputStream,BufferedReader is =null; Try is = new BufferedReader(new InputStreamReader(myClient.getInputStream(); catch(IOException e) System.out.print(e.toString(); ,客户端创建OutputStream,DataOutputStream os =null; Try os = new DataOutputStream(myClient.getOutputStream(); catch(IOException e) System.out.print(e.toString(); ,服务器端创建InputStream,BufferedReader is =null; Try is = new BufferedReader(new InputStreamReader(serviceClient.getInputStream(); catch(IOException e) System.out.print(e.toString(); ,服务器端创建OutputStream,DataOutputStream os =null; Try os = new DataOutputStream(serviceClient.getOutputStream(); catch(IOException e) System.out.print(e.toString(); ,输入/输出,PrintStream out = new PrintStream(new BufferedOutputStream(clientSocket.getOutputStream(), 1024) ,false); DataInputStream in = new DataInputStream(new BufferedInputStream(clientSocket.getInputStream(); 使用DataInputStream.readLine()按行接收数据。 使用out.println(“aaaaaaaaaaaaaaa”)按行发送数据。,客户端关闭Socket,try os.close(); is

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论