Original by 黄嘉輝 Modification by 游象甫

Slides:



Advertisements
Similar presentations
姓名:柴伟龙 学号: 指导老师:邹立杰 姓名:柴伟龙 学号: 指导老师:邹立杰 2012 毕业论文 ( 设计 ) 答辩.
Advertisements

第一單元 建立java 程式.
網路程式設計 (Network Programming)
第7章 防 火 墙 技 术 7.1 防火墙概念 7.2 防火墙原理及实现方法 7.3 防火墙体系结构 7.4 防火墙的构成
计算机网络(第 6 版) 第 6 章 应用层 青岛理工大学通信与电子工程学院.
第 12 章 UDP 與 TCP.
Chapter 12 UDP 與 TCP.
第2章 计算机网络的协议与体系结构 2.1 计算机网络体系结构的形成 2.2 协议与划分层次 2.3 计算机网络的原理体系结构
Foundations of Computer Science Chapter 6 電腦網路
校園網路管理實電務 電子計算機中心 謝進利.
计算机系统安全 第10章 常用攻击手段.
Socket.
基于WinSock的邮件系统 1 设计目标: 1.1 SMTP发送邮件服务器(c语言) 1.2 POP3接受邮件服务器(c语言)
第5章 网络软件 开发技术 (一) 软件开发技术基础 计算机教学实验中心.
计算机网络实验介绍 信息网络实验室 2017/9/13 04:55:22.
本章导语 第六章 计算机网络基础 本章目录 本章重点  开始学习 思考问题.
Topics 應用架構 學習路徑 熱門議題 相關認證.
Core Switch 設定 Port的開啟與關閉 Virtual LAN建立 將Port指定到Virtual LAN
第 12 章 UDP 與 TCP.
網路基本概念 本章主要是為讀者建立有關網路的基本知識, 作為後續章節的基礎。首先我們會說明網路的基本概念, 接著介紹網路的各種類型與相關的作業系統, 最後則是介紹 OSI 與 DoD 等兩種網路模型, 讓讀者能進一步了解網路運作的方式。
利用 ISA Server 2004 建置應用層防護機制
計中「多媒體與網路應用」短期訓練課程 FTP server 架設 (in Windows)
程式語言的基礎 Input Output Program 世代 程式語言 第一世代 Machine language 第二世代
Java语言程序设计 清华大学出版社 第9章 网络通信.
第3讲 网络安全协议基础 此为封面页,需列出课程编码、课程名称和课程开发室名称。
Java簡介.
TCP協定 (傳輸層).
第一篇 Unix/Linux 操作介面 第 1 章 Unix/Linux 系統概論 第 2 章 開始使用 Unix/Linux
Socket 基本觀念.
Socket () and TCP client-server
P2P通信之 ——UDP穿越NAT方案的讨论
TCP/IP Protocol Suite TCP/IP協定 第二組 投影片製作by簡嘉宏 綦凱宏 林睿敏 滕孟哲.
C#程序设计 c# programming 网络编程 C#程序设计课程组.
HiNet 光世代非固定制 用戶端IPv6設定方式說明
在一定程度上 人类的思维产生于 简单个体之间的相互作用 ——Marvin Minsky.
西南科技大学网络教育系列课程 高级语程序设计(Java) 第十一章 Java 中的网络编程.
ASP.NET基本設計與操作 建國科技大學 資管系 饒瑞佶 2007年.
認識網際網路 網際網路(Internet)簡介 WWW簡介 臺灣地區網路資源 網路禮儀與規範 收發電子郵件 相關程式與服務
第4章 OSI傳輸層.
Echo Server/Client Speaker:Fang.
TCP/IP介紹 講師:陳育良 2018/12/28.
DHCP 详解及在 AP 中的使用 韦宇轩 SA
校園網路架構介紹與資源利用 主講人:趙志宏 圖書資訊館網路通訊組.
網際網路與電腦應用 林偉川 2001/11/08.
第 12 章 UDP 與 TCP 著作權所有 © 旗標出版股份有限公司.
網路安全技術 OSI七層 學生:A 郭瀝婷 指導教授:梁明章.
Topic Introduction—RMI
第一單元 建立java 程式.
第2讲 网络安全协议基础 此为封面页,需列出课程编码、课程名称和课程开发室名称。
Web Server 王宏瑾.
Westmont College 网络应用软件 第一讲 (客户-服务器 概念, 协议端口的使用, 套接字API)
第4章 TCP/IP应用层常用协议 4.1 Telnet 协 议 4.2 文件传输协议FTP 4.3 电子邮件的工作原理及其协议
Network Application Programming(3rd Edition)
Advister: Quincy Wu Speaker: Chenglin Tsai Date:3/26
3.1 通訊協定 3.2 開放系統參考模式(OSI) 3.3 公眾數據網路 3.4 TCP/IP通訊協定
3 電子商務技術.
傳輸控制協議 /互聯網協議 TCP/IP.
第三章 資料的傳收與接送 3-1 TCP程式設計 3-2 UDP程式設計 3-3 Socket程式設計 3-4資料的非同步傳送與接收.
SOCKET( ).
2019/5/3 JAVA Socket(UDP).
IP Layer Basics, Firewall, VPN, and NAT
2019/5/20 JAVA Socket(UDP).
ARP攻擊 A 吳峻誠.
助教:廖啟盛 JAVA Socket(UDP) 助教:廖啟盛
Internet课程设计 教师:陈 妍 朱海萍 西安交通大学计算机系
指導教授 :逄愛君 資訊三 B 莊惟舜 資訊三 B 張憶婷 資訊三 B 徐嘉偉
IP Layer Basics & Firewall
第十二章 Java网络编程 1.URL编程 2.Socket网络编程 3.Datagram网络编程.
Chapter 4 Multi-Threads (多執行緒).
Department of Computer Information Science, NCTU
Presentation transcript:

Original by 黄嘉輝 Modification by 游象甫 Socket Original by 黄嘉輝 Modification by 游象甫 Java 網際網路程式設計, 文魁資訊

Overview Berkeley Socket Microsoft Windows Socket Java Socket

Socket Interface 一種應用程式介面(API) 介於應用程式與硬體之間,並提供標準的函式以符合不同的網路硬體規格 最早的Socket Interface於1980年代由加州柏克萊大學為支援UNIX作業系統上的TCP/IP應用所開發的Socket介面,稱為Berkeley Socket Interface,而其軟體則稱為Berkeley Software Distribution (BSD)

Berkeley Socket Berkeley Socket Interface是一組函式,介於網路應用程式與作業系統及網路硬體間,應用程式透過呼叫Socket Interface,發展具有TCP/IP網路功能之應用

Server端BSD API函式 socket bind listen accept recv read 建立socket 設定socket所使用的local端IP 位址及通訊埠 listen 設定socket等候(listen)Client端連結請求 accept 接受自Client端的連結請求並建立socket連結 recv 接收來自Client端所傳送的資料 (TCP) read

Server端BSD API函式 (cont.) recvfrom 接收來自Client端所傳送的資料 (UDP) send 傳送資料至Client端 (TCP) write sendto 傳送資料至Client端 (UDP) closesocket 關閉通訊連結及socket,並且釋放系統資源 shutdown 關閉socket的傳送及接收功能

Client端BSD API函式 socket connect recv read recvfrom 建立socket 建立與Server端socket連線 recv 接收來自Server端所傳送的資料 (TCP) read recvfrom 接收來自Server端所傳送的資料 (UDP)

Client端BSD API函式 (cont.) send 傳送資料至Server端 (TCP) write sendto 傳送資料至Server端 (UDP) closesocket 關閉通訊連結及socket,並且釋放系統資源 shutdown 關閉socket的傳送及接收功能

Berkeley Socket網路應用 Berkeley Socket在網路應用程式開發上,大致有下列兩類 Stream Socket(Connection-Oriented Protocol) Datagram Socket(Connectionless Protocol)

BSD Stream Socket 使用TCP傳送資料 TCP 在傳遞資料之前,會先在主機間建立通訊連結,依據此通訊連結傳遞資料 可保證資料無誤送達,且到達順序與送出順序相同

Server端Stream Socket連線流程

Client端Stream Socket連線流程

BSD Datagram Socket 使用UDP傳送資料 與TCP不同的是,TCP在傳遞資料之前須先建立通訊連結,但UDP則不需要,僅須設定電腦間的IP及使用的Port,則可互相傳遞訊息 UDP不提供資料錯誤的偵測及資料重送等機制,因此並不確保資料能完整送達

Datagram Socket連線流程 由於不必建立雙方的連線,因此只需利用sendto及recvfrom傳送及接收資料 最後仍利用closesocket關閉Socket並釋放系統資源

MS Windows Socket Microsoft Windows Socket(簡稱WinSock),是Microsoft以Berkeley Socket API為基礎所發展出來的 在MS Windows 3.1之前,Windows並不包含支援TCP/IP的Socket API,因此在網路功能上相對地不足 支援網路功能則由Third-Party協力廠商開發 Trumpet WinSock、Chameleon、NetWare支援TCP/IP的Socket API應用函式庫

WinSock (cont.)

WinSock API函數 由winsock.dll、wsock32.dll到ws2_32.dll,版本則由1.0、1.1至2.0版 ws2_32.dll (32 bit) TCP/IP Protocol Network WinSock 1.1 winsock.dll (16 bit) wsock32.dll (32 bit) Winsock 2.0

WinSock API函數 (cont.) WinSock API可分為四大類 BSD Socket API WinSock延伸(Extended)函數 轉換(Conversion)函數 資料庫(Database)函數

WinSock BSD API 以BSD Socket API為基礎所發展出來的 在Winsock 2.0已漸漸被Winsock延伸函數(Extended API)所取代 主要功能在於建立socket連線、傳送或接收數資料

WinSock延伸(Extended)函數 因應Windows的Multi-Task、Event-Driven與Message-Driven的環境,以BSD Socket API為基礎而發展出的WinSock API函數 提供BSD Socket API所沒有的非同步(Asynchronous)及訊息導向的Socket API 為了區別起見,Winsock延伸函數均以WSA開頭 大部分的WinSock延伸函數的功能與BSD Socket API差不多 例如BSD Socket API的connect相對應的WinSock延伸函數則是WSAConnect

WinSock延伸(Extended)函數 (cont.) WSAAccept 接受自Client端的連結請求並建立socket連結 WSAConnect 建立socket之間的連線 WSARecv 接收來自Client端所傳送的資料 (TCP) WSARecvFrom 接收來自Client端所傳送的資料 (UDP) WSASelect 設定socket的讀寫狀態的I/O傳輸 WSASend 傳送資料至Client端 (TCP) WSASendTo 傳送資料至Client端 (UDP)

WinSock延伸(Extended)函數 (cont.) WSASocket 建立socket WSACloseEvent 關閉WinSock事件 WSACreateEvent 建立WinSock事件 WSAResetEvent 更新WinSock事件 WSASetEvent 設定WinSock事件 WSAEnumNetworkEvents 回傳目前所有的WinSock事件 WSAWaitForMultipleEvents 等待正在blocking的WinSock事件

WinSock 轉換(Conversion)函數 主要將32 bit或16 bit的整數從主機位元順序(Host Byte Order)轉換為網路位元順序(Network Byte Order),或者是由網路位元順序轉為主機位元順序 也提供32位元IP位址與ASCII位址之間的轉換

WinSock 轉換(Conversion)函數 (cont.) WSAHtonl 將32位元長整數從主機位元順序(host byte order)轉換至網路位元順序(network byte order) WSAHtons 將16 位元短整數從主機位元順序(host byte order)轉換至網路位元順序(network byte order) WSANtohl 將32 位元長整數從網路位元順序(network byte order) 轉換至主機位元順序(host byte order) WSANtohs 將16 位元短整數從網路位元順序(network byte order) 轉換至主機位元順序(host byte order)

WinSock資料庫(Database)函數 雖名為資料庫函數,但與資料庫並無關聯 主要在處理IP Address與主機名稱(DNS Name)間的轉換或者取得通訊協定或通訊埠(Port)等相關資訊

WinSock資料庫(Database)函數 (cont.) WSAAsyncGetHostByAddr 以主機IP位址執行非同步取得主機的相關資訊 WSAAsyncGetHostByName 以主機名稱執行非同步取得主機的相關資訊 WSAAsyncGetProtoByName 以通訊協定的名稱執行非同步取得通訊協定的相關資訊 WSAAsyncGetProtoByNumber 以通訊協定的號碼執行非同步取得通訊協定的相關資訊 WSAAsyncGetServByName 以服務的名稱及通訊協定執行非同步取得服務的相關資訊 WSAAsyncGetServByPort 以服務的通訊埠及通訊協定執行非同步取得服務的相關資訊

WinSock網路應用 WinSock的應用程式可分為兩類 Stream Socket Datagram Socket

WinSock Stream Socket流程

WinSock Datagram Socket流程 不需要事先建立連線,因此傳遞資料的雙方並無實際的連線關係存在,只需利用WSARecvFrom及WSASendTo接收及傳送資料

Java Socket Java支援網路的API java.net (Networking) javax.net.ssl (Networking with Secure Socket Layer) java.rmi (Remote Method Invocation) javax.rmi (Remote Method Invocation for IIOP)

java.net 其API分為以下幾類 處理URL(Uniform Resource Locator) 處理主機名稱及IP Address 處理UDP(User Datagram Protocol)通訊協定 處理TCP(Transmission Control Protocol)通訊協定 處理網路認證(Authentication)及權限(Permission) 內容處理器(ContentHandler)

處理URL Interface URLStreamHandlerFactory Class java.net.HttpURLConnection java.net.JarURLConnection java.net.URL java.net.URLClassLoader java.net.URLConnection java.net.URLDecoder java.net.URLEncoder java.net.URLStreamHandler Exception java.net.MalformedURLException java.net.UnknownServiceException

處理主機名稱及IP Address Class java.net.InetAddress Method public byte[] getAddress() public static InetAddress[] getAllByName(String host) throws UnknownHostException public static InetAddress getByName(String host) throws UnknownHostException public String getHostAddress() public String getHostName() public static InetAddress getLocalHost() throws UnknownHostException Exception java.net.UnknownHostException

處理UDP通訊協定 Interface Class Exception DatagramSocketImplFactory java.net.DatagramPacket java.net.DatagramSocket java.net.DatagramSocketImpl java.net.MulticastSocket Exception java.net.SocketException

處理TCP通訊協定 Interface SocketImplFactory SocketOptions Class java.net.ServerSocket java.net.Socket java.net.SocketImpl Exception java.net.BindException java.net.ConnectException java.net.NoRouteToHostException java.net.ProtocolException java.net.SocketException

處理網路認證及權限 Class java.net.Authenticator java.net.NetPermission java.net.PasswordAuthentication java.net.SocketPermission

Java Stream Socket流程

Java Datagram Socket流程