码迷,mamicode.com
首页 > 编程语言 > 详细

学习Python基础--------7网络编程

时间:2017-09-27 23:59:33      阅读:308      评论:0      收藏:0      [点我收藏+]

标签:code   大学   虚拟   编程   目的   建立   系统   ipv6   消息   

套接字

  套接字是计算机网络数据结构,它体现了通信节点概念,在任何类型的通信开始之前,网络应用程序必须创建套接字,可以将它比作电话插孔,没有他将无法通信。

  套接字最早是加利福尼亚大学的伯克利版本UNIX(UNIX BSD)套接字称为bokeli套接字或BSD套接字。套接字最初是为同一主机上的应用程序创建的,使主机上运行的一个程序(又名一个进程)和另一个运行程序进行通讯。这就是所谓的进程通讯,有两种的套接字类型:基于文件和面向网络的

  UNIX套接字是第一个套接字家族,并拥有家族名字  AF_UNIX,他代表地址家族:UNIX

  因为两个进程运行在同一台计算机上,所以这些套接字基于文件,这就意味着文件系统支持他们的底层基础结构,这就能够说得通了,因为文件是一个运行在同一主机上的多个进程之间的常量。

  第二种类型的套接字是面向网络的,它有自己的家族名称AF_INET,或者家族:因特网  。另一个家族AF_INET6用于第6版因特网协议(IPV6)寻址

面向连接套接字与无连接套接字

1.面向连接套接字

  面向连接套接字意味着通讯之前必须先建立一个连接,例如使用电话系统给朋友打电话。这种类型的通讯我们称为虚拟电路或流套接字。

  面对连接的通讯提供序列化的,可靠的和不重复的数据交付,而没有记录边界,这基本意味着每条信息可以拆分成多个片段,并且每一段信息片段都能确保能够到达目的地,然后将它按顺序组合在一起,最后完整消息传递给正在等待的应用。

  实现这种类型的主要协议是传输控制协议TCP,为了创建TCP套接字,必须使用SOCK_STREAM作为套字节类型。TCP套接字的名字SOCK_STREAM基于流套接字的其中一种表示。因为这些套接字(AF_INET)的网络版使用因特网协议IP来搜寻网络中的主机,所以整个系统结合这两种协议(TCP和IP来进行)

2.无连接的套接字

无连接的套接字被称为数据报类型的套接字,通讯不用建立连接,传输无法保证重复性,循序性,可靠性,可以整体发送。它成本低廉性能更好。

  实现这种连接类型的主要协议是用户数据报协议UDP。为了创建UDP套接字,必需使用SOCK_DGRAM作为套接字类型,因为这些套接字也是用因特网协议来寻找网络主机,所以有个更普通的名字UDP/IP

另外还有

socket.SOCK_RAW     #原始套接字,普通的套接字无法处理ICMP、IGMP等网络报文,而SOCK_RAW可以;其次,SOCK_RAW也可以处理特殊的IPv4报文;此外,利用原始套接字,可以通过IP_HDRINCL套接字选项由用户构造IP头。

socket.SOCK_RDM  #是一种可靠的UDP形式,即保证交付数据报但不保证顺序。SOCK_RAM用来提供对原始协议的低级访问,在需要执行某些特殊操作时使用,如发送ICMP报文。SOCK_RAM通常仅限于高级用户或管理员运行的程序使用。

一个简单的本地

 

学习Python基础--------7网络编程

标签:code   大学   虚拟   编程   目的   建立   系统   ipv6   消息   

原文地址:http://www.cnblogs.com/szy413227820/p/7604528.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!