美文网首页
网络(socket)

网络(socket)

作者: 沙长健 | 来源:发表于2016-11-14 17:39 被阅读34次

一 socket简介
Socket 是进程通讯的一种方式, 即调用这个网络库的一些API函数实现分布在不同主机的相关进程之间的数据交换
几个定义:
(1) IP地址: 即依照TCP/IP协议分配给本地主机的网络地址, 两个进程要通讯, 任一进程首先要知道通讯对方的位置, 及对方的IP
(2) 端口号:用来辨别本地通讯进程, 一个本地的进程在通讯时均会占用一个端口号, 不同的进程端口号不同, 因此在通讯前必须要分配一个没有被访问的端口号.
(3) 连接: 指两个进程间的通讯链路
(4) 半相关:网络中用一个三元组可以在全局唯一标志一个进程:(协议,本地地址,本地端口号)
(5) 全相关: 一个完整的网间进程通信需要由两个进程组成, 并且只能使用同一种高层协议, 也就是说, 不可能通信的一端用TCP协议, 而另一段用UDP协议.因此一个完整的网间通讯需要一个五元组来标识: (协议, 本地地址, 本地端口号, 远地地址, 远地端口号)
这样一个五元组,叫做一个相关(association),即两个协议相同的半相关才能组合成一个合适的相关,或完全指定组成一连接。
// 端口为何物
端口包括物理端口和逻辑端口。物理端口是用于连接物理设备之间的接口,逻辑端口是逻辑上用于区分服务的端口。TCP/IP协议中的端口就是逻辑端口,通过不同的逻辑端口来区分不同的服务。一个IP地址的端口通过16bit进行编号,最多可以有65536个端口。端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535。
关于端口的介绍
http://baike.baidu.com/link?url=dIAVecb4CG3622ATr_6x1e_iHNzQ_XpFw6xPM8uXAwM7Z-liSgkG4a_fkhkjtI-xwyjWwGHxkFIgRrATsAwmg4z177p5TG_YBUKXByxaAfbz1bCej0Rkd_Whz2-nGbc8

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

服务器端:
其过程是首先服务器方要先启动,并根据请求提供相应服务:
(1)打开一通信通道并告知本地主机,它愿意在某一公认地址上的某端口(如FTP的端口可能为21)接收客户请求; (2)等待客户请求到达该端口;

(3)接收到客户端的服务请求时,处理该请求并发送应答信号。接收到并发服务请求,要激活一新进程来处理这个客户请求(如UNIX系统中用fork、exec)。新进程处理此客户请求,并不需要对其它请求作出应答。服务完成后,关闭此新进程与客户的通信链路,并终止。
(4)返回第(2)步,等待另一客户请求。
(5)关闭服务器
客户端:
(1)打开一通信通道,并连接到服务器所在主机的特定端口;
(2)向服务器发服务请求报文,等待并接收应答;继续提出请求......

(3)请求结束后关闭通信通道并终止。
从上面所描述过程可知:
(1)客户与服务器进程的作用是非对称的,因此代码不同。

(2)服务器进程一般是先启动的。只要系统运行,该服务进程一直存在,直到正常或强迫终止。

介绍完基础知识,下面就介绍一些API函数:

创建套接字 ——— socket()
什么是套接字
源IP地址和目的IP地址以及源端口号和目的端口号的组合称为套接字。其用于标识客户端请求的服务器和服务。
应用程序在使用套接字前, 首先必须拥有一个套接字, 系统调用 socket() 向应用程序提供创建套接字的手段, 其调用格式如下:

有待跟新

//博主地址
http://acm.tzc.edu.cn/acmhome/projectList.do?method=projectNewsDetail&nid=2
//关于WebSocket的知识
http://www.tuicool.com/articles/7zyMvy6
http://zengrong.net/post/2199.htm

相关文章

  • 网络编程

    python学习笔记-网络编程 socket编程: socket()函数:socket.socket([famil...

  • Socket编程

    一、Socket 1.1 Socket简介 Socket就是为网络服务提供的一种机制。网络通信其实就是Socket...

  • 许世伟的Go语言基础 第五章总结

    第5章 网络编程 5.1 socket编程 以往socket编程: 建立socket:使用socket()函数。 ...

  • iOS开发-Socket&XMPP(即使通讯)

    Socket&XMPP 什么是Socket? 1.HTTP 就是基于Socket实现; 2.网络模型(为了网络的可...

  • Socket 网络编程(一)

    Socket Socket,又称“套接字”,应用程序通常通过“套接字”向网络发出请求或应答网络请求。 Socket...

  • 深入理解 Socket 缓冲区

    网络编程离不开 Socket,Socket 就是发送和接收网络数据,Socket 有发送缓冲也有接收缓冲,这些缓冲...

  • day23-06-网络编程(Socket)/-07-网络编程(U

    一、网络编程(Socket) Socket就是网络服务提供的一种机制。是在网络层的ip通信的两端都有Socket。...

  • 5.0.3.Socket

    Socket(网络套接字)是网络编程提供的一种机制,通信的两端都要有socket,网络通信就是socket通信数据...

  • 网络编程

    网络 Socket 基于TCP协议的Socket编程 基于UDP协议的Socket编程

  • ios底层Socket编程

    前言 “一切皆Socket!”话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。Socket网络...

网友评论

      本文标题:网络(socket)

      本文链接:https://www.haomeiwen.com/subject/wtohpttx.html