tcp服务器必须accept客户的连接,并在连接建立完成之后(也就是说,但tcp的三次握手结束之后)才被告知客户的ip地址和端口号。只有这个时候,如果服务器不喜欢客户的ip地址和端口号,才能关闭连接,这并不是对tcp的要求特性,这只是插口api的通常工作方式
当tcp受到一股目的端口是23的报文段时(假设本地端口是23),它调用in_pcblookup,搜索它的整个internet PCB表,找到一个匹配。马上我们就会研究这个函数,将考到它有优先权,因为它的统配匹配数最少。为了确定统配匹配数,我们只考虑本地和外部的IP地址,不考虑外部端口号。本地端口号必须匹配,否则我们甚至不考虑pcb。即同匹配数越少,精度越高,这样优先权也越高。
值得注意的是,如果外部ip指定了,且是相等的,那么这时候才比较外部端口,若这时候外部端口不相等,那么我们可以认为根本不匹配,即使他的目的地址和目的端口都是相等的,即我们认为匹配数无限大。。。。
也即只有当pcb中的外部地址不是通匹配地址时,才比较外部端口。