计算机网络和因特网课件
27.8 Procedures that Implement The Socket API
27.8.1 The Socket Procedure.
descriptor = socket(protofamily,type, protocol)
Return a socket descriptor if successful; -1 if error.
The system returns a small integer descriptor that identifies the socket.
In a Unix implementation,sockets are completely integrated with other I/o.
A single application can be written that transfers data to an arbitrary location.
当所有的传输操作完成后,用户进程关闭调用, 通知操作系统已经完成了对某对象的使用。
TCP/IP协议被集成到UNIX内核中时,相当于 在UNIX系统引入了一种新型的I/O操作。 UNIX用户进程与网络协议的交互作用比用户 进程与传统的I/O设备相互作用复杂得多。 首先,进行网络操作的两个进程可能在不同 主机上,如何建立它们之间的联系? 其次,存在多种网络协议,如何建立一种通 用机制以支持多种协议? 这些都是网络应用编程所要解决的问题。
4.协议端口
网络中可以被命名和寻址的通信端口,是操作 系统可分配的一种资源。
传输层与网络层在功能上的最大区别是传输层 提供进程通信能力。
因此,网络通信的最终地址就不仅仅是主机地 址了,还包括可以描述进程的某种标识符。
为此,TCP/IP协议提出了协议端口 (protocol port,简称端口)的概念,用于 标识通信的进程。
27.6 Sockets, Descriptors, And network I/O
Socket communication also uses the descriptor approach.
Before an application can use protocols to communicate,the application must request the operating system to create a socket that will be used for communication.
27.4 Sockets And Socket Libraries
In BSD Unix and the system derived from it,socket functions are part of the operating system itself.
In many cases,instead of modifying their basic operating system,vendors created a socket library that provides the Socket API.
Computer Networks and Internets
《计算机网络与因特网》课件
林坤辉
2019-02-6
PART IV Network Applications
Chapter 27 The Socket Interface Socket 接口
27.1 Introduction
The interface between an application and protocol software. How an application uses protocol software to communication. Set of procedures that an application uses to become a client or a server, to contact a remote destination, or to transfer data.
Unix uses an open-read-write-close paradigm for all I/o
补充: 1. Socket API与Unix
Unix是一个通用的交互式多用户分时操作系统。 Unix由AT&T 公司Bell实验室于1969年开发。 Unix 有两个主要的流派:System V 和 BSD System V 由最初的AT&T Unix 演化而来。 BSD Unix 是由加州大学伯克利(Berkeley) 分 校开发,其目标是提供一个具有复杂网络支持 的开放系统。 TCP/IP 协议族也与Unix 的发展有很密切关系。 Socket API与Unix 操作系统关系非常密切。
The Socket Procedure:
The socket procedure creates a socket and returns an integer descriptor.
An API defines a set of operations that an application can perform when interacting with protocol software, the API determines the functionality that is available.
Socket接口
应用程序的基本网络接口
–由操作系统提供; –进程的通信端点 –一个socket的信息含义
协议类型 本地地址 本地端口号 远端地址 远端端口号
27.7 Parameters And The Socket API
Socket programming differs from conventional I/o.
27.3 The Socket API
Although protocol standards allow operating system designers to choose an API, many have adopted the Socket API. The Socket API is available for many operating systems. The Socket API originated as part of the BSD Unix operating system. The Socket API is a de facto standard.
Because an application must specify many details to use a socket.
To accommodate all the details, each socket has many parameters and options.
To avoid having a single socket function with separate parameters for each option,designers of the socket API chose to define many function.
插口结构
Client-Server执行模式
Client-Server端执行模式
Server
Socket bind
准备阶段
Client Socket
listen accept
连接建立阶段 connect
Send/recv(循环) 通信阶段 Send/recv(循环)
cபைடு நூலகம்ose
关闭阶段
close
注意:上面这些Socket的意思与指IP地址和 TCP端口号的组合的Socket不同
A socket library can provide applications with a socket API on a computer system that does not provide native sockets.
When an application calls one of the socket procedures, control passes to a library routine that makes one or more calls to the underlying operating system to implement the socket function.
(协议,本地地址,本地端口号)
这样一个三元组,叫做一个半相关(halfassociation),它指定连接的每半部分。
全相关
一个完整的网间进程通信需要由两个进程组成, 并且只能使用同一种高层协议。 一个完整的网间通信需要一个五元组来标识:
(协议,本地地址,本地端口号,远程地址, 远程端口号)
这样一个五元组,叫做一个相关 (association),即两个协议相同的半相关 才能组合成一个合适的相关,或完全指定组成 一连接。
端口是一种抽象的软件结构(包括一些数据 结构和I/O缓冲区)。
应用程序(即进程)通过系统调用与某端口 建立连接(binding)后,传输层传给该端 口的数据都被相应进程所接收,相应进程发 给传输层的数据都通过该端口输出。
在TCP/IP协议的实现中,端口间的操作类似 于一般的I/O操作,进程获取一个端口,相 当于获取本地唯一的I/O文件,可以用一般 的读写原语访问之。
27.5 Socket Communication And Unix I/O
An application communicates through a socket similar to the way the application transfers data to or from a file.
类似于文件描述符,每个端口都拥有一个 叫端口号(port number)的整数型标识符, 用于区别不同端口。