TCP协议中的端口具体指的是什么,为什么要有端口,你是怎么理解的?(实用、赞)

205 篇文章 0 订阅
160 篇文章 0 订阅

原文出处:https://www.zhihu.com/question/22577025
延伸阅读:
1、轻松理解网络端口是什么
2、如何理解IP地址和端口号

一、TCP协议中的端口具体指的是什么,为什么要有端口,你是怎么理解的


其实你在问别人端口的概念的时候,很多解释都是机器是一个房间,窗户就好像是机器的端口。这个解释基本上没什么用,或者是个误导。

我在网上也查了些,基本上是上面的解释。从我自己的理解上将为什么要有端口,怎么来规划端口,看下边。

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

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

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

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


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

【总结】
ip地址是用来定位网络上的一台主机,而端口号是用来定位主机上的一个后台程序/服务(上面的ABCDEF....)

二、端口号的选择原则是什么? 

1、有很多协议都有自己的默认端口的,如http默认是80,rtmp默认1935,QQ默认端口8000,4000等等等等,所以端口的使用原则是不冲突。端口号通常是0~65535,每个数字代表一个端口号,为了不冲突,自己开发的东西,尽量使用后面的,一般就在20000~50000之间随便选吧,问题不大。还有就是在公司,通常都只会有一个出口暴露在公网上,公司内部电脑的端口想要开放在公网上,必须将公司出口(网关)做端口映射,把外网端口映射到局域网内某台电脑的某个端口,具体你搜端口映射就知道了 
2、其实一般端口只要不冲突的话-不妨选自己喜欢的数字-万一哪天自己程序火了咧-这个端口就是你的代号啦

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值