Westmont College 网络应用软件 第一讲 (客户-服务器 概念, 协议端口的使用, 套接字API)

Slides:



Advertisements
Similar presentations
網路程式設計 (Network Programming)
Advertisements

计算机网络基础 主讲:华蓓 实验室:电一楼(安徽省计算与通讯软件重点实验室) Tel:
第7章 防 火 墙 技 术 7.1 防火墙概念 7.2 防火墙原理及实现方法 7.3 防火墙体系结构 7.4 防火墙的构成
第 12 章 UDP 與 TCP.
第一次上机作业说明 业务系统说明 Socket编程技术 如何分析应用层协议 应用程序结构.
中国科学技术大学 肖 明 军 《网络信息安全》 中国科学技术大学 肖 明 军
Access数据库知识 安丘市职业中专 雷云龙.
马志强 软件学院501室 网络应用开发 马志强 软件学院501室
Chapter 12 UDP 與 TCP.
第2章 计算机网络的协议与体系结构 2.1 计算机网络体系结构的形成 2.2 协议与划分层次 2.3 计算机网络的原理体系结构
第6章 计算机网络基础.
计算机网络.
计算机网络 暨南大学计算机科学系 学年 第一学期.
第1章 概述.
操作系统结构.
Foundations of Computer Science Chapter 6 電腦網路
计算机系统安全 第10章 常用攻击手段.
Socket.
计算机网络实验介绍 信息网络实验室 2017/9/13 04:55:22.
TOP100 案例标题 徐华海 架构师 当当.
传输层是整个协议层次的核心,其任务是在源机器和目标机器之间提供可靠的、性价比合理的数据传输功能,并与当前所使用的物理网络完全独立
Advanced Sockets Programming
标准TCP/IP编程接口 ——Socket
第 12 章 UDP 與 TCP.
TCP、UDP 通信实践 广州创龙电子科技有限公司 01 广州创龙电子科技有限公司
利用 ISA Server 2004 建置應用層防護機制
通訊協定 OSI分層模式 與 TCP/IP協定
第3讲 网络安全协议基础 此为封面页,需列出课程编码、课程名称和课程开发室名称。
(C) Active Network CO., Ltd
1-1 電腦的起源 1-2 電腦的演進 1-3 電腦的種類 1-4 電腦與生活
Socket Programming in C
Socket Programming.
Socket 基本觀念.
P2P通信之 ——UDP穿越NAT方案的讨论
Installation, advance wireless module and evaluation 2008/11/11
TCP/IP Protocol Suite TCP/IP協定 第二組 投影片製作by簡嘉宏 綦凱宏 林睿敏 滕孟哲.
在一定程度上 人类的思维产生于 简单个体之间的相互作用 ——Marvin Minsky.
Westmont College 网络管理 SNMP
套接字API调用.
中国科学技术大学计算机系 陈香兰(0512- ) Autumn 2010
Westmont College 互联网应用软件 第二讲 (DNS, , TELNET, FTP)
第2章 套接字网络编程基础 2.1 UNIX套接字网络编程接口的 产生与发展 2.2 套接字编程的基本概念 2.3 面向连接的套接字编程
校園網路架構介紹與資源利用 主講人:趙志宏 圖書資訊館網路通訊組.
第5讲 网络层 本讲目的: 概述: 理解网络层服务原理: 因特网的实现实例 网络层的服务 路由选择原理 分层的路由选择 IP协议
第 12 章 UDP 與 TCP 著作權所有 © 旗標出版股份有限公司.
Westmont College 网络互连 Part 4 (传输协议, UDP and TCP, 协议端口)
Web Server 王宏瑾.
iSoftStone Information Service Corporation
Window Socket 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
Network Application Programming(3rd Edition)
Advister: Quincy Wu Speaker: Chenglin Tsai Date:3/26
使用WireShark解析TCP封包 Computer Network Lab2.
3.1 通訊協定 3.2 開放系統參考模式(OSI) 3.3 公眾數據網路 3.4 TCP/IP通訊協定
傳輸控制協議 /互聯網協議 TCP/IP.
Source: Journal of Network and Computer Applications, Vol. 125, No
實驗目的: 明瞭DHCP運作原理 建置DHCP伺服器
NAT技术讲座 主讲:周旭 大唐电信科技股份有限公司光通信分公司 数据通信部.
講員:游文志 排程系統教育訓練 後台管理系統 講員:游文志
面向非连接的 SOCKET编程 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
第 14 章 DHCP 著作權所有 © 旗標出版股份有限公司.
2019/5/3 JAVA Socket(UDP).
Chapter 10 Mobile IP TCP/IP Protocol Suite
IP Layer Basics, Firewall, VPN, and NAT
助教:廖啟盛 JAVA Socket(UDP) 助教:廖啟盛
Internet课程设计 教师:陈 妍 朱海萍 西安交通大学计算机系
IP Layer Basics & Firewall
Homework 3.
第十二章 Java网络编程 1.URL编程 2.Socket网络编程 3.Datagram网络编程.
Westmont College 网络互连 Part 2 (数据包 封装,传输, 分片, 重组)
Presentation transcript:

Westmont College 网络应用软件 第一讲 (客户-服务器 概念, 协议端口的使用, 套接字API) CS 140 Part XV 网络应用软件 第一讲 (客户-服务器 概念, 协议端口的使用, 套接字API) Chapters 26-28

应用层的功能 传输层及其以下层 应用层 通讯基础 可靠性 抽象 定义了标识网络上物理的和抽象的资源的符号名称。 文件 各种服务 数据库 2019/4/9

二重性 网络 传输位 在应用程序请求下工作 由应用程序的决定 发送什么? 何时发送? 发送至何处? 每个位的含义 2019/4/9

要点 Although an internet system provides a basic communication service, the protocol software cannot initiate contact with, or accept contact from, a remote computer. Instead, two application programs must participate in any communication: one application initiates communication and the other accepts it. 虽然因特网提供了基本的通讯服务, 但是协议软件并不能初始化连接,或是接收来自远程计算机的连接请求。而是在任何通信中,必须要有两个应用程序共同参与: 一个发出连接请求,另外一个接受请求. 从这个角度看,internet更象一个电话系统。 2019/4/9

两个应用程序如何联系 一个应用程序 另一个应用程序 称为: client-server interaction 首先开始执行 在预先设定的位置等待 另一个应用程序 随后开始执行 主动联系低一个程序 称为: client-server interaction 2019/4/9

客户-服务器 模式 应用于所有的网络应用程序 等待被访问的程序叫做服务器 主动连接的程序叫做客户端 2019/4/9

网络通讯 All network applications use a form of communication known as the client-server paradigm. A server application waits passively for contact, while a client application initiates communication actively. 网络应用所使用的通信形式称为客户-服务器模式。服务器应用被动地等待连接,而客户端软件则主动地初始化通讯. 2019/4/9

客户端的特征 任意应用程序 临时成为客户 也可进行其他的计算 由用户直接触发 在本地机运行 动态连接到服务器端 一次只能连接一个服务器端 2019/4/9

服务器特征 有一定功能和权限的程序 专用于提供某种服务 可同时处理多个远程客户端连接 系统启动后自动运行 永远运行 需要高性能的计算机和操作系统支持. 被动等待客户连接 接收任意客户端的请求 2019/4/9

术语 服务器 接收网络客户端连接请求的程序 服务器级计算机 运行服务程序的硬件设备 2019/4/9

数据流 数据流的方向 应用程序协议决定流向 标准通信模型 仅仅从客户端到服务器 仅仅从服务器到客户端 双向流动 客户端发请求 服务端响应 2019/4/9

主要思想 信息可以单向或双向地在客户和服务器之间流动。虽然许多服务是由客户发送一个或更多请求,然后服务器返回响应,但是其它的交互也是可能的. 2019/4/9

客户端,服务端及通信协议 客户端和服务端均为应用程序 2019/4/9

服务端 CPU 的使用情况 事实 结果 服务器的操作类似于其他应用程序 等待数据在网络间传输不需要 CPU时间 使用I/O 操作 等待数据在网络间传输不需要 CPU时间 结果 服务器程序只有在需要服务一个请求时才使用 CPU 2019/4/9

多种服务 在一台计算机上可以提供多种服务 服务器仅在被请求时才会使用处理器 同时提供多个服务需要功能强大的硬件 2019/4/9

多种服务图例 每个服务器可提供一个服务 一个服务器可处理多个客户端 2019/4/9

标识服务 使用协议端口号 每个服务给定唯一的端口号, P 服务器 客户端 通知 OS 它正在使用端口 P 等待请求 提出请求 2019/4/9

关于端口的要点 Transport protocols assign each service a unique port identifier. A server must specify the identifier when it begins execution. A client must specify the identifier when it requests transport protocol software to contact a server. Protocol software on the server computer uses the identifier to direct an incoming request to the correct server. 传输协议分配给每个服务一个唯一的端口标识符. 服务器开始执行的时候必须指明标识符. 客户请求时也要指明标识符.服务器上的协议软件利用标识符将到来的请求定向到相应的服务器. 2019/4/9

理论上 端口号仅仅是数字 任何一个服务器都可以使用任何一个端口号 2019/4/9

实际上 协议端口号用来做服务的唯一标识符 需要统一的编号方式 端口号 允许任意的客户端在任意机器上连接到服务器 避免“服务目录帮助”的需要 整个因特网统一 由标准规定 2019/4/9

术语 顺序程序 绝大部分程序属于此类 单路控制 并发程序 多路控制 并行完成 建立较困难 2019/4/9

服务器和并发 顺序服务器 也被称为循环式服务 每次只能处理一个请求 并发服务器 一次可以处理多个请求 无需等待 2019/4/9

服务器的延迟 并发服务器 顺序服务器 服务器为每个请求建立新线程来处理 客户端只需等待请求被处理 客户端只能等待前面的请求被应答之后才能得到应答 如果长请求阻塞了短请求,用户将无法得到应答 2019/4/9

服务器上的并发性 并发执行是服务器的基础.因为并发性允许多个客户同时得到特定的服务,而不需要等待服务器完成前面的请求. 在并发服务器上,主服务线程创建一个新的服务线程来处理每一个客户请求. 2019/4/9

协议端口和并发服务器 明显的问题 一个端口号只能标记一个服务 并发服务器同时有多个服务在运行 客户端和服务器间可能交互 传送到到同一服务器端口的信息必须进一步正确转交给相应的线程 2019/4/9

协议端口和并发服务器(续) 问题解决方案: 同时利用客户端信息和服务器来标识数据包 TCP 用四项信息来确认连接 服务器的IP地址 服务器的协议端口号 客户端的IP地址 客户端的协议端口号 2019/4/9

Demultiplexing in a Concurrent Server 传输协议给每个客户和服务器分配一个标识符.服务器计算机上的协议软件通过使用客户、服务器标识符的合并来选择正确的并发服务器的副本. 2019/4/9

多协议均可到达的服务 服务器可能使用 同一种服务可以使用多种不同的传输协议 无连接传输协议 (UDP) 有连接的传输协议 (TCP) 对某个服务同时使用两种通信形式 同一种服务可以使用多种不同的传输协议 增加了服务的灵活性 服务器可以同时拥有多个端口号 2019/4/9

复杂的服务 服务器可以 与客户端的交互持续几小时甚至几天 发送短应答,然后结束交互 使用本地机的 I/O 作为客户端连接其他服务器 (潜在循环问题) 2019/4/9

循环问题举例 时间服务器 文件服务器 假设程序员修改时间服务器,记录文件请求的日志,会发生什么? 返还该天当时的时间 允许客户端读写文件 Westmont College CS 140 循环问题举例 时间服务器 返还该天当时的时间 文件服务器 允许客户端读写文件 当文件需要时间标识时,可访问时间服务器 假设程序员修改时间服务器,记录文件请求的日志,会发生什么? 2019/4/9 Chapters 26-28

协议软件的交互 客户端和服务器都使用传输协议 传输协议在OS内部 应用程序在 OS外部 两者之间需要连接 称为 应用程序接口 (API) 2019/4/9

应用程序接口(API) 操作系统的一部分 允许应用程序使用协议 定义 允许的操作 每次操作的参数 2019/4/9

Socket API 初始设计 现况 为 BSD UNIX设计 与 TCP/IP 同时使用 成为工业标准 被许多操作系统支持 2019/4/9

套接字和套接字库 在没有提供本地套接字的计算机系统上,套接字库能够为应用程序提供套接字API。 当应用调用某个套接字过程时,控制转向库例程,这些库例程调用一个或多个底层操作系统的功能来实现套接字功能. 2019/4/9

Socket 一种OS 抽象 (而非硬件的) 动态生成 仅在应用程序运行时启用 用描述符来标识一个套接字 当应用调用底层过程通过网络传输数据时,应用会把该描述字作为一个参数,这样就无需知道远程目标的细节。 2019/4/9

描述符Descriptor 小的整数 每个激活的 socket 一个 在所有的 socket操作中运用 当 socket 建立后由OS产生 在 UNIX 下, 与文件描述符集成 2019/4/9

创建一个 Socket 应用程序调用 socket 函数 desc = socket(protofamily,type,proto); OS 返回 socket 的描述符 描述符有效至应用程序关闭或退出socket 一般: protofamily = PF_INET, 表示TCP/IP协议族 type = SOCK_STREAM or流 SOCK_DGRAM报文 desc = socket(protofamily,type,proto); 2019/4/9

Socket 的功能 Socket 具有广泛的普遍性 可以被以下对象使用 具有大量的操作 客户端 服务器 CO 传输协议 CL 传输协议 用于发送/接收数据 具有大量的操作 2019/4/9

Socket 的操作 关闭 停止使用 socket 永久性的 close(socket); 2019/4/9

Socket 的操作 捆绑 bind(socket,localaddr,addrlen); 为socket指定端口 为 socket 指定一个本地IP地址 对任意IP地址可以使用 INADDR_ANY bind(socket,localaddr,addrlen); 2019/4/9

通用地址格式 struct sockaddr { u_char sa_len; /*length of address*/ u_char sa_family; /*family of address*/ char sa_data[14]; /*address itself*/ } 2019/4/9

TCP/IP 地址形式 struct sockaddr_in { u_char sin_len; /*length of address*/ u_char sin_family; /*family of address*/ u_short sin_port; /*protocol port number*/ struct in_addr sin_addr; /*IP address*/ char sin_zero[8]; /*not used(set to zero)*/ } 2019/4/9

Socket 操作(续) 监听 接收 listen(socket,queuesize); 供服务器使用 准备socket来接收到来的连接 接收 等待下一次连接并返回一新的 socket listen(socket,queuesize); newsock = accept(socket,caddr,caddrlen); 2019/4/9

Socket操作(续) 连接 connect(socket,saddr,saddrlen); 供客户端使用 完成以下其中任一个 完成一个 TCP 连接 为 UDP指明地址 connect(socket,saddr,saddrlen); 2019/4/9

Connect函数的两个用途 Connet过程是由客户端调用的,它有两个用途. 当使用面向连接传输, connect 复杂与指定的服务器建立一个传输连接. 当使用无连接、传输时, connect 负责在套接字中记录服务器地址。这样,客户不需要为每条消息指定目的地址,就可向同一服务器发送多个消息。 2019/4/9

SOCKET操作(续) Send, sendto,和sndmsg send(socket,data,length,flags); 从应用程序传出数据 send(socket,data,length,flags); sendto(socket,data,length,flags, destaddr,addrlen); sendmsg(socket,msgstruct,flags); 2019/4/9

Msgstruct的结构 struct msgstruct { struct sockaddr *m_saddr; /*dest address*/ struct datavec *m_dvec; /*message (vector)*/ int mdvlength; /*size of vector*/ struct access *m_rights; /*access rights*/ int m_alength; /*size of access rights*/ } 2019/4/9

SOKET操作(续) Recv, recvfrom, 和recvmsg recv(socket,buffer,length,flags); 将接收数据转给应用程序 recv(socket,buffer,length,flags); recvfrom(socket,buffer,length,flags, senderaddr,saddrlen); recvmsg(socket,msgstruct,flags); 2019/4/9

SOKET操作(续) 其它的许多附加功能 提供支持和额外服务功能 一些由库实现 2019/4/9

Socket 支持功能举例 Gethostbyname Getprotobyname 把域名镜像成IP地址 举例 根据协议名得到主机代码 www.nuaa.edu.cn Getprotobyname 根据协议名得到主机代码 参数常取 “tcp” or “udp” 2019/4/9

服务举例 目的 记录访问它的客户的数目 返回可打印的ASCII码信息 面向连接协议 顺序执行 (非并发) 2019/4/9

客户端 打开 TCP 连接到服务器 重复直到文件结束: 接收正文 打印收到的字符 关闭连接 退出 2019/4/9

服务器举例 建立socket并进入被动模式 无限重复: 注意 接收连接,得到新的socket 计数增加并送出文本信息 服务器永不退出 2019/4/9

服务器和客户端的调用 客户端用后关闭 socket 服务器永不关闭初始的 socket 2019/4/9

客户端代码 程序参数 细节 克服不同版本Socket的不同 客户端代码列表 主机 协议口 以上均可选 Unix Microsoft Use C language #ifdef 客户端代码列表 2019/4/9

客户端代码 2019/4/9

2019/4/9

2019/4/9

2019/4/9

2019/4/9

服务器代码 程序参数 协议口 C language #ifdefs for socket variants 服务器代码列表 2019/4/9

2019/4/9

2019/4/9

2019/4/9

2019/4/9

流接口 发送方 TCP 接收方 Calls send repeatedly 指出每次调用的字节数 把流分割为segments Calls recv repeatedly 每次调用接收一个或多个字节 零字节意味文件结束 接收的长度与发送的长度无关 2019/4/9

总结 应用程序总是采用客户端/服务器模式交互 客户端 任意应用程序 主动开始通信 必需知道服务器的 IP 地址 协议端口号 2019/4/9

总结(续) 服务器 专用程序 永远运行不停止 一般提供一个服务 消极等待客户端请求 可以同时处理多个客户端 2019/4/9

总结(续) Socket API Socket 标准化的 介于应用程序和协议软件之间 操作系统抽象 动态建立 由客户端和服务器使用 2019/4/9