socket理论基础

2019-07-25  本文已影响0人  叶扬风起
1. TCP/IP理解

  TCP/IP协议族,即传输控制协议、网间协议,定义了主机如何连入因特网及数据如何在它们之间传输的标准。从字面意思来看TCP/IP是TCP和IP协议的合称,但实际上TCP/IP协议是指因特网整个TCP/IP协议族。不同于ISO模型的七个分层,TCP/IP协议参考模型把所有的TCP/IP系列协议归类到四个抽象层中:
  应用层:TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet等等
  传输层:TCP,UDP
  网络层:IP,ICMP,OSPF,EIGRP,IGMP
  数据链路层:SLIP,CSLIP,PPP,MTU


TCP/IP协议
ISO模型
2. socket概念

  1. Socket(中文译为套接字)是操作系统内核中的一个数据结构,它几乎是所有网络通信的基础
  2. 网络通信,归根到底还是进程间的通信(不同计算机上的进程间通信, 又称为网络通信, IP协议进行的主要是端到端通信)。
  在网络中,每一个节点(计算机或路由)都有一个网络地址,也就是IP地址。两个进程通信时,首先要确定各自所在的网络节点的网络地址。但是,网络地址只能确定进程所在的计算机,而一台计算机上很可能同时运行着多个进程,所以仅凭网络地址还不能确定到底是和网络中的哪一个进程进行通信,因此套接字中还需要包括其他的信息,也就是端口号(PORT)。在一台计算机中,一个端口号一次只能分配给一个进程,也就是说,在一台计算机中,端口号和进程之间是一 一对应的关系。
  3. socket使用(IP地址,协议,端口号)来标识一个进程。所以,使用端口号和网络地址的组合可以唯一的确定整个网络中的一个网络进程。

端口号的范围从065535,一类是由互联网指派名字和号码公司ICANN负责分配给一些常用的应用程序固定使用的“周知的端口”,其值一般为01023, 用户自定义端口号一般大于等于1024

  4. 每一个socket都用一个半相关描述{协议、本地地址、本地端口}来表示;一个完整的套接字则用一个相关描述{协议、本地地址、本地端口、远程地址、远程端口}来表示。socket也有一个类似于打开文件的函数调用,该函数返回一个整型的socket描述符,随后的连接建立、数据传输等操作都是通过socket描述符来实现的。
  5. 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。socket通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过“套接字”向网络发出请求或者应答网络请求。socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,对于文件用打开、读写、关闭模式来操作,socket就是该模式在网络上的一个实现,即socket是一种特殊的文件。两个程序通过“网络”交互数据就使用socket,它只负责两件事:建立连接,传递数据;同时socket在收发数据时遵循的原则:有发就有收,收发必相等!

文件读写和socket收发数据的区别:
  - file模块是针对某个指定文件进行打开、读写、关闭
  - socket模块是针对服务器端和客户端socket进行打开(连接)、读写(收发)、关闭(断开)

socket创建
3. Socket类型

  socket类型在Liunx和Python中是一样的, 只是Python中的类型都定义在socket模块中, 调用方式socket.SOCK_XXXX

上一篇下一篇

猜你喜欢

热点阅读