博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TCP协议中的端口指什么,为什么要有端口
阅读量:3703 次
发布时间:2019-05-21

本文共 668 字,大约阅读时间需要 2 分钟。

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

好,那网卡说我给你们加个表示吧,我们之间可以用一个号码来作为标识,我和小A之间就用1来标识,如果外界发给1号标识的数据我就转发给你,你监听我的时候得告诉我你监听的时1,我就转发1的数据包给你。好了其他的BCD…都自己弄一个标识号,只要不重复就行。这样大家都省事了。

最后设计到安全,一个标识号只能被一个应用程序监听,因为如果小A程序和小B同时监听一个标识号号,那就坏了,我传的数据都被AB接到,这样数据安全性就没办法保证了。

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

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

有个很有意思的事情就是流量跳转的问题,我把本地往外出到某个端口的流量给屏蔽掉,这样就造成了相关的应用无法访问网页。(PS:为什么我不屏蔽掉本机的某些端口呢,因为屏蔽本机端口没有用,本机的端口都是随机分配的,我们说的固定端口都是指服务器的端口)

这就是我的理解,希望大家指正拍砖。

转载地址:http://etyjn.baihongyu.com/

你可能感兴趣的文章
IDEA报错:Error:java: JDK isn‘t specified for module ‘work-flow‘
查看>>
Springboot2连接mongodb4注意事项
查看>>
Activiti7 通过BpmnModel部署流程并启动实例
查看>>
centos7 安装docker
查看>>
Mybatis的Mapper接口方法无法重载
查看>>
POST 请求实现任意的文件下载
查看>>
Nginx部署Npm打包的项目访问时F5刷新404
查看>>
H5 CSS3 解决块级元素横排时的间隙
查看>>
关于IE8 IE9 兼容性问题
查看>>
<a> 标签的使用
查看>>
vue 通过路由守卫阻止跳转
查看>>
Vue 生命周期和钩子函数的理解
查看>>
Vuex的简单用法
查看>>
JAVA基本容器总结(学习笔记)
查看>>
IDEA导入jar架包
查看>>
Eclipse 导入jar方式
查看>>
datawhale数据分析task1(1)使用pandas读取数据并统计论文数据
查看>>
异常检测常用方法及库2021-01-14
查看>>
异常检测——基于统计学方法(参数方法、非参数方法、HBOS、pyod库)
查看>>
使用pandas读取数据并统计论文数据(2)2021-01-17
查看>>