socket通信

端口
    
网络中可以被命名和寻址的通信端口,是操作系统可分配的一种资源。
    
按照OSI七层协议的描述,传输层与网络层在功能上的最大区别是传输层提供进程通信能力。   从这个意义上讲,网络通信的最终地址就不仅仅是主机地址了,还包括可以描述进程的某种标识符。为此,TCP/IP协议提出了协议端口(protocol port,简称端口)的概念,用于标识通信的进程。
    
端口是一种抽象的软件结构(包括一些数据结构和I/O缓冲区)。应用程序(即进程)通过系统调   用与某端口建立连接(binding)后,传输层传给该端口的数据都被相应进程所接收,相应进程发给传输层的数据都通过该端口输出。在TCP/IP协议的实现中,端口操作类似于一般的I/O操作,进程获取一个端口,相当于获取本地唯一的I/O文件,可以用一般的读写原语访问之。
    
类似于文件描述符,每个端口都拥有一个叫端口号(port number)的整数型标识符,用于区别不同端口。由于TCP/IP传输层的两个协议TCPUDP是完全独立的两个软件模块,因此各自的端口号也相互独立,如TCP有一个255号端口,UDP也可以有一个255号端口,二者并不冲突。

 

*   地址
    
网络通信中通信的两个进程分别在不同的机器上。在互连网络中,两台机器可能位于不同的网络,这些网络通过网络互连设备(网关,网桥,路由器等)连接。因此需要三级寻址:

    某一主机可与多个网络相连,必须指定一特定网络地址;

    网络上每一台主机应有其唯一的地址;

    每一主机上的每一进程应有在该主机上的唯一标识符。
通常主机地址由网络ID和主机ID组成,在TCP/IP协议中用32位整数值表示;TCPUDP均使用16位端口号标识用户进程。

 

*   网络字节顺序
    
不同的计算机存放多字节值的顺序不同,有的机器在起始地址存放低位字节(低价先存),有的存高位字节(高价先存)。为保证数据的正确性,在网络协议中须指定网络字节顺序。TCP/IP协议使用16位整数和32位整数的高价先存格式,它们均含在协议头文件中。

*   面向连接

可靠的报文流、可靠的字节流、可靠的连接,如:文件传输(FTP)、远程登录(Telnet
数字话音。

*   无连接

不可靠的数据报、有确认的数据报、请求-应答,如:电子邮件(E-mail)、电子邮件中的挂号信、网络数据库查询。

*   顺序

在网络传输中,两个连续报文在端-端通信中可能经过不同路径,这样到达目的地时的顺序

可能会与发送时不同。"顺序"是指接收数据顺序与发送数据顺序相同。TCP协议提供这项服务。

*   差错控制

保证应用程序接收的数据无差错的一种机制。检查差错的方法一般是采用检验、检查和Checksum的方法。而保证传送无差错的方法是双方采用确认应答技术。TCP协议提供这项服务。

*   流控制
    
在数据传输过程中控制数据传输速率的一种机制,以保证数据不被丢失。TCP协议提供这项服务。

*   字节流
    
字节流方式指的是仅把传输中的报文看作是一个字节序列,不提供数据流的任何边界。TCP协议提供字节流服务。

*   报文
    
接收方要保存发送方的报文边界。UDP协议提供报文服务。

*   全双工/半双工
    
端-端间数据同时以两个方向/一个方向传送。

*   缓存/带外数据
    
在字节流服务中,由于没有报文边界,用户进程在某一时刻可以读或写任意数量的字节。为保证传输正确或采用有流控制的协议时,都要进行缓存。但对某些特殊的需求,如交互式应用程序,又会要求取消这种缓存。

*   客户/服务器模式

TCP/IP网络应用中,通信的两个进程间相互作用的主要模式是客户/服务器模式(Client/Server model),即客户向服务器发出服务请求,服务器接收到请求后,提供相应的服务。客户/服务器模式的建立基于以下两点:首先,建立网络的起因是网络中软硬件资源、运算能力和信息不均等,需要共享,从而造就拥有众多资源的主机提供服务,资源较少的客户请求服务这一非对等作用。其次,网间进程通信完全是异步的,相互通信的进程间既不存在父子关系,又不共享内存缓冲区,因此需要一种机制为希望通信的进程间建立联系,为二者的数据交换提供同步,这就是基于客户/服务器模式的TCP/IP
客户/服务器模式在操作过程中采取的是主动请求方式:
首先服务器方要先启动,并根据请求提供相应服务:

    打开一通信通道并告知本地主机,它愿意在某一公认地址上(周知口,如FTP为 21)接收客户请求;

     等待客户请求到达该端口;

    接收到重复服务请求,处理该请求并发送应答信号。接收到并发服务请求,要激活一新进程来处理这个客户请求(如UNIX系统中用forkexec)。新进程处理此客户请求,并不需要对其它请求作出应答。服务完成后,关闭此新进程与客户的通信链路,并终止。

    返回第二步,等待另一客户请求。

     关闭服务器

客户方:

    打开一通信通道,并连接到服务器所在主机的特定端口;

    向服务器发服务请求报文,等待并接收应答;继续提出请求......

    请求结束后关闭通信通道并终止。

从上面所描述过程可知:

    客户与服务器进程的作用是非对称的,因此编码不同。

    服务进程一般是先于客户请求而启动的。只要系统运行,该服务进程一直存在,直到正常或强迫终止。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值