安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

linux网络编程socket端口进程的关系

12月4日 醉殇别投稿
  socket的引入是为了解决不同计算机间进程间通信的问题。
  端口是TCPIP协议中的概念,描述的是TCP协议上的对应的应用,可以理解为基于TCP的系统服务,或者说系统进程!如下图,FTP就需要占用特定的TCP端口。
  而socket呢,是网络编程中的概念,对TCPIP协议进行了抽象和实现,并为应用层提供接口。这里的应用A,可以是FTP应用,它属于用户进程,通过socket与内核中的网络协议栈进行交互。
  socket是核心,是枢纽,是进程与网络建立关系的必经之路!1。内核是如何将数据包转发至socket的呢?
  网络数据首先到达网卡,然后进入内核,由网络协议栈去处理,那么内核是如何进行数据分发的呢?它怎么知道该如何把数据交给特定的用户进程呢?
  这时,就需要socket发挥作用了!
  socket中存储了特定的四元组:源ipport,目的1bind到特定ip和port的socket对应〔srcip,srcport)(,)〕;2connect到特定目的ipport的socket对应〔srcip,srcport)(dstip,dstport)〕;3accept返回了的socket对应〔srcip,srcport)(dstip,dstport)〕;
  那么内核根据数据包的四元组信息,就可以锁定特定的socket了。并可,系统中所有socket中的四元组信息,必定唯一,不可能重复!2进程与socket的关系是怎样的呢?
  每个进程,在内核中都有一个表,保存了该进程申请并占用的所有socket描述符,在进程看来,socket其实跟文件也没有什么不同,只不过通过描述符获得的对象不同而已,接口对应的系统调用也不同。
  那么进程跟socket是一一对应的吗?
  其实不然,socket是一种资源,就像文件一样,一个进程打开了,另一个进程也可以用,只不过socket比较特殊而已。
  理论上,能够通过sendmsg将socket描述符传递给其他进程,这样其他进程就可以调用该描述符的接口了。这种场景确实不怎么会用到,也没有进行实际验证。
  当然,父子进程间,还有线程间,进行socket的共享,是比较常见的。3进程与端口
  进程与端口,其实并没有什么直接或必然的关系,关键还是socket!
  wireshark抓包查看tcp协议数据包详情:总结
  socket的本质是一种资源,它包含了端到端的四元组信息,用来标识数据包的归属。因此,尽管tcp协议的端口号只有65535个,但是进程可拥有的socket数据却不限于此(受限于进程最大文件描述符数据);
  相关视频推荐
  100行代码,实现网络协议栈,准备好linux环境
  linux服务端的网络并发,详细解读网络io与线程进程关系
  学习地址:CCLinux服务器开发后台架构师【零声教育】学习视频教程腾讯课堂
  需要CCLinux服务器架构师学习资料加qun812855908获取(资料包括CC,Linux,golang技术,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCPIP,协程,DPDK,ffmpeg等),免费分享
  PS:一、端口简介
  随着计算机网络技术的发展,原来物理上的接口(如键盘、鼠标、网卡、显示卡等输入输出接口)已不能满足网络通信的要求,TCPIP协议作为网络通信的标准协议就解决了这个通信难题。TCPIP协议集成到操作系统的内核中,这就相当于在操作系统中引入了一种新的输入输出接口技术,因为在TCPIP协议中引入了一种称之为Socket(套接字)应用程序接口。有了这样一种接口技术,一台计算机就可以通过软件的方式与任何一台具有Socket接口的计算机进行通信。端口在计算机编程上也就是Socket接口。
  有了这些端口后,这些端口又是如何工作呢?例如一台服务器为什么可以同时是Web服务器,也可以是FTP服务器,还可以是邮件服务器等等呢?其中一个很重要的原因是各种服务采用不同的端口分别提供不同的服务,比如:通常TCPIP协议规定Web采用80号端口,FTP采用21号端口等,而邮件服务器是采用25号端口。这样,通过不同端口,计算机就可以与外界进行互不干扰的通信。
  据专家们分析,服务器端口数最大可以有65535个,但是实际上常用的端口才几十个,由此可以看出未定义的端口相当多。这是那么多黑客程序都可以采用某种方法,定义出一个特殊的端口来达到入侵的目的的原因所在。为了定义出这个端口,就要依靠某种程序在计算机启动之前自动加载到内存,强行控制计算机打开那个特殊的端口。这个程序就是后门程序,这些后门程序就是常说的木马程序。简单的说,这些木马程序在入侵前是先通过某种手段在一台个人计算机中植入一个程序,打开某个(些)特定的端口,俗称后门(BackDoor),使这台计算机变成一台开放性极高(用户拥有极高权限)的FTP服务器,然后从后门就可以达到侵入的目的。二、端口的分类
  端口的分类根据其参考对象不同有不同划分方法,如果从端口的性质来分,通常可以分为以下三类:
  (1)公认端口(WellKnownPorts):这类端口也常称之为常用端口。这类端口的端口号从0到1024,它们紧密绑定于一些特定的服务。通常这些端口的通信明确表明了某种服务的协议,这种端口是不可再重新定义它的作用对象。例如:80端口实际上总是HTTP通信所使用的,而23号端口则是Telnet服务专用的。这些端口通常不会像木马这样的黑客程序利用。
  (2)注册端口(RegisteredPorts):端口号从1025到49151。它们松散地绑定于一些服务。也是说有许多服务绑定于这些端口,这些端口同样用于许多其他目的。这些端口多数没有明确的定义服务对象,不同程序可根据实际需要自己定义,如后面要介绍的远程控制软件和木马程序中都会有这些端口的定义的。记住这些常见的程序端口在木马程序的防护和查杀上是非常有必要的。常见木马所使用的端口在后面将有详细的列表。
  (3)动态和或私有端口(DynamicandorPrivatePorts):端口号从49152到65535。理论上,不应把常用服务分配在这些端口上。实际上,有些较为特殊的程序,特别是一些木马程序就非常喜欢用这些端口,因为这些端口常常不被引起注意,容易隐蔽。
  如果根据所提供的服务方式的不同,端口又可分为TCP协议端口和UDP协议端口两种。因为计算机之间相互通信一般采用这两种通信协议。前面所介绍的连接方式是一种直接与接收方进行的连接,发送信息以后,可以确认信息是否到达,这种方式大多采用TCP协议;另一种是不是直接与接收方进行连接,只管把信息放在网上发出去,而不管信息是否到达,也就是前面所介绍的无连接方式。这种方式大多采用UDP协议,IP协议也是一种无连接方式。对应使用以上这两种通信协议的服务所提供的端口,也就分为TCP协议端口和UDP协议端口。
  使用TCP协议的常见端口主要有以下几种:
  (1)FTP:定义了文件传输协议,使用21端口。常说某某计算机开了FTP服务便是启动了文件传输服务。下载文件,上传主页,都要用到FTP服务。
  (2)Telnet:它是一种用于远程登陆的端口,用户可以以自己的身份远程连接到计算机上,通过这种端口可以提供一种基于DOS模式下的通信服务。如以前的BBS是纯字符界面的,支持BBS的服务器将23端口打开,对外提供服务。
  (3)SMTP:定义了简单邮件传送协议,现在很多邮件服务器都用的是这个协议,用于发送邮件。如常见的免费邮件服务中用的就是这个邮件服务端口,所以在电子邮件设置中常看到有这么SMTP端口设置这个栏,服务器开放的是25号端口。socket介绍
  socket为内核对象,由操作系统内核来维护其缓冲区,引用计数,并且可以在多个进程中使用。至于称它为句柄文件描述符都是一样的,它只不过是内核开放给用户进程使用的整数而已。
  socket()创建了一个socket内核对象。accept或者connect后,才可以对socket句柄读写。因为只有在connect或者bind,listen,accept后才会设置好socket内核对象里边的ip和端口。
  在使用socket编程时,我们都知道在网络通信以前首先要建立连接,而连接的建立是通过对socket的一些操作来完成的。那么,建立连接的过程大致可以分为以下几步:
  1)建立socket套接字。
  2)给套接字赋予地址,这个地址不是通常的网络地址的概念。
  3)建立socket连接。以下详细解释1建立socket套接字。
  使用socket建立套接字的时候,我们实际上是建立了一个数据结构。这个数据结构最主要的信息是指定了连接的种类和使用的协议,此外还有一些关于连接队列操作的结构字段(这里就先不涉及他们了)。
  当我们使用socket函数以后,如果成功的话会返回一个int型的描述符,它指向前面那个被维护在内核里的socket数据结构。我们的任何操作都是通过这个描述符而作用到那个数据结构上的。这就像是我们在建立一个文件后得到一个文件描述符一样,对文件的操作都是通过文件描述符来进行的,而不是直接作用到inode数据结构上。我之所以用文件描述符举例,是因为socket数据结构也是和inode数据结构密切相关,它不是独立存在于内核中的,而是位于一个VFSinode结构中。所以,有一些比较抽象的特性,我们可以用文件操作来不恰当的进行类比以加深理解。
  如前所述,当建立了这个套接字以后,我们可以获得一个象文件描述符那样的套接字描述符。就象我们对文件进行操作那样,我们可以通过向套接字里面写数据将数据传送到我们指定的地方,这个地方可以是远端的主机,也可以是本地的主机。如果你有兴趣的话,还可以用socket机制来实现IPC,不过效率比较低,试试也就行了(没有试过)。2给套接字赋予地址。
  依照建立套接字的目的不同,赋予套接字地址的方式有两种:服务器端使用bind,客户端使用connetc。
  Bind:
  我们都知道,只要使用IP,prot就可以区分一个tcpip连接(当然这个连接指的是一个连接通道,如果要区分特定的主机间的连接,还需要第三个属性hostname)。
  我们可以使用bind函数来为一个使用在服务器端例程中的套接字赋予通信的地址和端口。
  在这里我们称通信的IP地址和端口合起来构成了一个socket地址,而指定一个socket使用特定的IP和port组合来进行通行的过程就是赋予这个socket一个地址。要赋予socket地址,就得使用一个数据结构来指明特定的socket地址,这个数据结构就是structsockaddr。对它的使用我就不说了,因为这篇文档的目的是澄清概念而不是说明使用方法。Bind函数的作用就是将这个特定的标注有socket地址信息的数据结构和socket套接字联系起来,即赋予这个套接字一个地址。但是在具体实现上,他们两个是怎么联系在一起的,我还不知道。
  一个特定的socket的地址的生命期是bind成功以后到连接断开前。你可以建立一个socket数据结构和socket地址的数据结构,但是在没有bind以前他们两个是没有关系的,在bind以后他们两个才有了关系。这种关系一直维持到连接的结束,当一个连接结束时,socket数据结构和socket地址的数据结构还都存在,但是他们两个已经没有关系了。如果你要是用这个套接字在socket地址上重新进行连接时,需重新bind他们两个。再注明一次,我说的这个连接是一个连接通道,而不是特定的主机之间的连接。
  Bind指定的IP通常是本地IP(一般不特别指定,而使用INADDRANY来声明),而最主要的作用是指定端口。在服务器端的socket进行了bind以后就是用listen来在这个socket地址上准备进行连接。
  connect:
  对于客户端来说,是不会使用bind的(并不是不能用,但没什么意义),他们会通过connet函数来建立socket和socket地址之间的关系。其中的socket地址是它想要连接的服务器端的socket地址。在connect建立socket和socket地址两者关系的同时,它也在尝试着建立远端的连接。3建立socket连接。
  对于准备建立一个连接,服务器端要两个步骤:bind,客户端一个步骤:connct。如果服务器端accept一个connect,而客户端得到了这个accept的确认,那么一个连接就建立了。
投诉 评论 转载

王曼昱他像我父亲般,从无人问津到极限曼,肖战成就了她说起王曼昱,相信关注国乒的球迷朋友们都知道她在近期布达佩斯赛事上的表现吧。一周的时间内三次战胜伊藤美诚,囊括三项赛事冠军,这个女孩也一直在突破着她自己的极限。她以强悍的实力再次……骁龙8打赢翻身仗?新机发热表现都优于骁龙870,等等党终于赢骁龙888和骁龙8处理器的手机一概不买!这是这两年手机界很多人的感慨,想换一部新的高性能手机来使用,但奈何新款处理器的发热太高,只能观望不能入手。同时,因为这两代骁龙处理……从3699降至2599元,曲面屏1亿主摄,vivo自拍旗舰迎2021年末,vivo发布了S12系列,也正是从这代升级后,S系列不单单只针对女性用户群体,而是推出了许多针对男性用户的功能,同时还对女性用户的功能进行了升级与调整。而vivo……老师粗暴拽醒午睡幼儿莫让暴力夺走孩子们的安全感近日,一条幼儿园暴力唤醒午睡幼儿事件,刷爆网络。视频中孩子仍在熟睡,一名红衣女子粗暴地把孩子身上的被子掀起,同时顺手把酣睡中的孩子大力拎起,孩子猝不及防吓得哇哇大哭。……原油盘中重挫近5,OPEC减产难,12月合计产油或增加15万12月初的产油决策会议上,OPEC并未决定在西方对俄油限价生效之际进一步减产。事实上,12月OPEC产油国要真正实现按计划减产可能都不容易。媒体基于船运黄金、官员信息化顾……狠人给自己洗脑给别人洗脑有手段。给自己洗脑自律呗。想要吃得开,就得吃的苦中苦,方为人上人。十年寒窗苦读,一朝金榜题名。加油啊。大家都在扛着,哪有什么轻松就很厉害了呢。据说,……下午两点!男篮官宣,第二批球员行程出炉,状态良好,全力备战近期,中国篮协官方账号中国篮球之队在社媒上发布了中国篮球之队关于出访参赛新情况的答疑一文,文中提到了目前国家队出征雅加达的计划、目前留守墨尔本球员的情况、递补球员的选择方式以及……linux网络编程socket端口进程的关系socket的引入是为了解决不同计算机间进程间通信的问题。端口是TCPIP协议中的概念,描述的是TCP协议上的对应的应用,可以理解为基于TCP的系统服务,或者说系统进程!……整容脸,演技用力,人设不讨喜,即使星二代,依然配不上女二位置《幸福到万家》播出四集,估计观众被剧中的女二号,也就是何幸运给哭得心烦意乱。不从受害者有罪的角度看,也不从法律层面的角度看,实在想不通,何幸运受到的伤害为什么如此之大?……秦岚真是王者级女神!简约毛衣仔裤穿出万种风情,43岁有23岁近些年打底衫的上身率似乎远高于毛衣,导致毛衣渐渐淡出了女性的搭配中,但其实毛衣的造型可塑性很强,不同款式的毛衣能把女性的多种风格完美展现出来,特别是对于熟龄女性来说,带有毛衣的……39位民营经济人士当选云南省工商联(总商会)副主席(副会长)作者:张梦云近期,在省工商联(总商会)第十三次代表大会上,阮鸿献、李彪、张金炉等17位民营经济人士当选省工商联副主席,李莹、赵金才、吴登刚等22位民营经济人士当选为省总商……九版小乔颜值对比谁对得起周瑜的一往情深?谁在滥竽充数东汉末年,庐江皖县桥公家有二女,大桥和小桥(也作大乔和小乔)。虽然她们养在深闺,但国色天香之姿经见过之人口口相传,声名远播。公元199年,孙策联手周瑜攻取江东。大乔和小乔……
简忆纤之来,肠道清道夫霉霉风格突变金色露背装秀性感,金发红唇太妖娆走起了性感路线了96好评率!灵耀X13成年货节明星轻薄本,国潮双色任你选!低位放量的经典图形,大资金入驻,股价6。08元,净资产高达7弹壳特攻队时尚军用能量项链(内附最新兑换码)问佛世间何所苦?善良何所从?中国空间站未来将形成三舱三船构型3战怒砍0分!辽宁弃将持续打脸冠军后卫武功全失李楠悔不当初湖勇大战!浓眉填满数据栏,纳恩100命中率,库里维金斯单节1如何在破晓传说中刷钱9。30为什么成为中国楼市的风向标?中国肉牛产业骑虎难下以及进退两难的操盘者该如何收场?

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利