端口的本质

转载 2018年04月17日 09:55:05

转自知乎 arrdess https://www.zhihu.com/question/22577025

ip能锁定一台物理机器,对应着一张网卡,外界发来的数据包网卡都会接收。但是问题来了,网卡给程序提供了接口,你监听一下我,要是有消息来了,我就转发给你。这样应用程序就能收到数据了。但是问题来了,程序A和程序B都需要监听网卡接发数据,网卡说那我把接到的数据都发给你两,你们自己看着办吧。好,小A小B都接受了。但是又来了CDEF......,不行了,每个包都被发到了所有应用程序,每个应用程序都累得不行,最终垮了。


好,那网卡说我给你们加个表示吧,我们之间可以用一个号码来作为标识,我和小A之间就用1来标识,如果外界发给1号标识的数据我就转发给你,你监听我的时候得告诉我你监听的时1,我就转发1的数据包给你。好了其他的BCD...都自己弄一个标识号,只要不重复就行。这样大家都省事了。
最后设计到安全,一个标识号只能被一个应用程序监听,因为如果小A程序和小B同时监听一个标识号号,那就坏了,我传的数据都被AB接到,这样数据安全性就没办法保证了。

这个标识号就是端口,最初设计网络数据交换的设计者不知道是怎么想的。这是我的理解。

其实网卡都是被系统层封装了,端口和进程之间的关系也是系统封装好的。我们只需要用socket就行,给定一个端口号就行了。其他的事都交给操作系统去做。





ip能锁定一台物理机器,对应着一张网卡,外界发来的数据包网卡都会接收。但是问题来了,网卡给程序提供了接口,你监听一下我,要是有消息来了,我就转发给你。这样应用程序就能收到数据了。但是问题来了,程序A和程序B都需要监听网卡接发数据,网卡说那我把接到的数据都发给你两,你们自己看着办吧。好,小A小B都接受了。但是又来了CDEF......,不行了,每个包都被发到了所有应用程序,每个应用程序都累得不行,最终垮了。

好,那网卡说我给你们加个表示吧,我们之间可以用一个号码来作为标识,我和小A之间就用1来标识,如果外界发给1号标识的数据我就转发给你,你监听我的时候得告诉我你监听的时1,我就转发1的数据包给你。好了其他的BCD...都自己弄一个标识号,只要不重复就行。这样大家都省事了。
最后设计到安全,一个标识号只能被一个应用程序监听,因为如果小A程序和小B同时监听一个标识号号,那就坏了,我传的数据都被AB接到,这样数据安全性就没办法保证了。

这个标识号就是端口,最初设计网络数据交换的设计者不知道是怎么想的。这是我的理解。

其实网卡都是被系统层封装了,端口和进程之间的关系也是系统封装好的。我们只需要用socket就行,给定一个端口号就行了。其他的事都交给操作系统去做。

理解socket的本质

知其然更知其所以然,该文解答了困扰我很久的问题:What's socket indeed?         原文链接:socket通信原理 , 作者:zhshujun        另外,...
  • kingshown_WZ
  • kingshown_WZ
  • 2016-08-03 14:33:52
  • 2880

从问题看本质:socket到底是什么?及socket,端口,进程问答(收集整理)

一、问题的引入——socket的引入是为了解决不同计算机间进程间通信的问题 1.socket与进程的关系 1).socket与进程间的关系:socket   用来让一个进程和其他的进程互通...
  • benpaobagzb
  • benpaobagzb
  • 2016-02-26 11:23:01
  • 1070

还是端口回流问题 TCP协议解析

还是上一篇的问题在一内部局域网中,client  内网地址为 10.0.0.2    web  服务器内网地址为 10.0.0.1    外网地址为  211.6.15.1    域名为  xx.lo...
  • zonghua521
  • zonghua521
  • 2017-10-10 21:56:15
  • 479

服务器所有端口号作用详解

开始菜单-- 运行  -- netstat -an(查看端口命令) 一 、端口大全 端口可分为3大类: 1) 公认端口(Well Known Ports):从0到1023,它们紧密绑定于一些服务...
  • ghevinn
  • ghevinn
  • 2013-01-29 17:06:37
  • 3834

for循环本质

菜鸟:为什么在for循环里重复定义变量不会报错? 如下代码1,因为重复定义了两个变量 a ,编译器报错。 void main() { int a; int a; return; } 如下代码2,用...
  • u011555996
  • u011555996
  • 2016-11-16 20:07:42
  • 394

Android系统本质

操作系统的本质=系统内核+文件系统(ext3、ext4) Linux系统的本质是:Linux系统内核+文件系统(ext3,、ext4) Android系统的本质是:Linux内核+文件系统(ext...
  • s1244879237
  • s1244879237
  • 2017-02-17 11:35:00
  • 171

lambda表达式的本质

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T...
  • wangpeng2011314
  • wangpeng2011314
  • 2017-02-26 20:50:48
  • 436

线性代数的本质 - 系列合集观后总结

b站-线性代数的本质 这个系列的视频将可视化应用到线性代数几何意义的教学上,解释了很多之前在课堂上被强行定义但是不知道原理的线性代数常识:矩阵究竟有什么几何意义?为什么行列式绝对值等于面积(2d)或...
  • OX_louis
  • OX_louis
  • 2017-12-19 17:55:02
  • 303

让我们一起来看看计算的本质吧!

我们如何理解计算?如何理解程序?如何认识lambda演算?探索很多人费解的Y combinator...
  • theprinceofelf
  • theprinceofelf
  • 2013-12-12 20:22:27
  • 3764

技术的本质.pdf

  • 2015年08月24日 11:18
  • 1.55MB
  • 下载
收藏助手
不良信息举报
您举报文章:端口的本质
举报原因:
原因补充:

(最多只允许输入30个字)