计网基础-Web应用之套接字编程

 网络程序设计接口

数据链路层:编程

- 直接面向网卡编程,与硬件相关,比较难以掌握服务器

- 基于Packet Driver编程,独立于/屏蔽网卡实现细节,针对网卡的网络开发环境网络

网络层:数据结构

- 基于NDIS网络编程,针对Windows操做系统提供的一种网络驱动程序或协议驱动程序app

- 经典函数库,基于LibPcap/WinPcap(抓包)、Libnet(网络分组和数据的构造和发送)、Libnids(网络入侵检测)、Libicmp(icmp报文的构造和发送、处理)socket

传输层:函数

NetBIOS编程,针对Windows操做系统,是至关于OSI模型的会话层开发环境操作系统

传输层和应用层之间:设计

Socket编程3d

应用层:

Web、

RPC远程过程调用Remote Procedure Call、

中间件编程

 


应用编程接口API——应用层和传输层之间

做为应用程序,须要实现两个主机上运行的application的通讯,应用程序的通讯——>应用层内部进程之间的通讯——>遵循应用层协议,定义了如何交互,由于网络层次结构分为五层结构,则两个主机端系统从功能上均可以看做五个层次,很明显,做为应用进程之间的通讯,须要用到底层,好比传输层

传输层通常是操做系统控制,应用程序通常是应用进程控制,因此分为操做系统以内的网络协议(传输层),操做系统之上的应用进程(应用层)

应用进程要传输,须要遵循应用层协议,但真正传输的时候,须要把应用进程的数据,好比报文处理之后交给相邻层次传输层,传输层进一步处理交给下一层

 

Q:那么,应用层和传输层如何交互呢

A:接口/网络应用编程接口/API/Application Programming Interface

 


 API,事实上就是网络应用进程控制权和操做系统内部控制权的一个转换的一个系统调用接口

 

典型的网络应用编程接口:

1. 伯克利 UNIX操做系统定义的一种API,套接字接口,socket interface,简称套接字

2. 微软Windows操做系统采用了套接接口API,造成一个稍微不一样的API,Windows Socket Interface,WINSOCK

3. AT&T为其UNIX系统V定义了一种API,简写为TLI,Transport Layer Interface

 

 


套接字Socket API,是 Internet网络应用最典型的API接口

套接字,通讯模型为C/S

- 应用进程间通讯的抽象机制:对于单个客户端应用进程和服务器应用进程之间,二者须要建立套接字,才能进行应用进程通讯

- 对于多个服务器,可是只有一个客户端,此时客户端就须要建立多个套接字,每个套接字对应一个服务器套接字,并使用端口号绑定套接字

 

》》》因此当客户端和服务器中的应用进程进行通讯时,有了IP地址,能够知道套接字是对应哪个主机上运行的应用进程的套接字,进一步,有了端口号,能够知道具体是哪个套接字

 


标识通讯端点(对外):

  IP地址+端口号

一个操做系统/网络进程如何管理套接字(对内):

  套接字描述符(socket description),小整数

 

在使用套接字描述符管理套接字的时候,其实时一种抽象:Socket抽象

- 相似于文件抽象,像unix对套接字看做是一个特殊的文件管理

- 当应用进程建立套接字时,操做系统会分配一个数据结构存储该套接字相关信息

- 会返回套接字描述符,可进行访问和引用

 


 Q:怎么设置套接字的端点地址(IP+端口号)呢?

A:使用一个地址结构(地址结构里面包含ip、端口、地址族)

什么是地址族:虽然套接字API主要是面向TCP/IP协议栈,但其实套接字能够面向不一样的协议栈,因此不一样的协议栈的端点地址是不一样的。对于TCP/IP协议栈,使用的地址族是AF_INET

 

备注:

TCP/IP协议,或称为TCP/IP协议栈,或互联网协议系列。

TCP/IP协议栈(按 TCP/IP参考模型划分为5层),,不一样于OSI(7层),他将OSI中的会话层、表示层规划到应用层。

TCP/IP协议栈,包含了一系列构成互联网基础的网络协议。

 

相关文章
相关标签/搜索