connect、send、recv 等函数为啥只要IP和端口,而不要子网掩码
connect、send、recv 等函数为什么只要IP和端口,而不要子网掩码
connect、send、recv 等函数为什么只要IP和端口,而不要子网掩码?我看了一下IP的结构,各字段也没有子网掩码成分。如果对方在子网中,那数据包如何找到对方电脑?
send函数需要一个缓冲区,从最上层的协议封装到最下层的过程中,似乎都看不见子网掩码在何时封装。难道不在send函数封装?是在其他函数(socket、bind、listen、accept...)封装吗?我看了一些网络方面理论的书,也没见到何时封装子网掩码
------解决方案--------------------
顶
------解决方案--------------------
应该是在 链路层和物理层
------解决方案--------------------
路由和交换机干的事情
------解决方案--------------------
子网掩码不需要我们操心。
比如校园网,大家的外部ip都是一样的,只是内部ip不一样,怎么区分内部ip,你需要看计算机网络技术这本书中的分址这一章
------解决方案--------------------
其实就是 内网ip的概念
http://baike.baidu.com/view/1233066.htm
------解决方案--------------------
我也不知道底层是怎么回事。
简单说下:
如果是外网,比如 A 和 B
send之后,数据会发到底层网卡,接着是路由器(保存了各个网络之间的路由路径),数据沿着这个路径走到B的路由器,经过网卡,最后被receive。
如果是内网,比如A里面有C、D
C,D连网时,会有一个ip(这个ip动态分配的),C发送数据到B,会经过A,A对数据包的源ip(就是C的内网ip)改为A的ip,接着如上外网一样发出去。收到时,再把目标ip改为C的ip,发到C的电脑上。
------解决方案--------------------
我觉得是路由器,因为路由器保存了大量的网与网之间的映射关系。
------解决方案--------------------
子网掩码是路由器过滤数据包时需要用到的,对我们编程不需要这么底层,除非你要写网关程序
------解决方案--------------------
子网掩码在你的发送端是没用的,在中专端和接收端使用.比如你是192.168.1.1/24,子网掩码改成255.255.0.0,一样用.
这时如果你收到一个来自192.168.2.1的数据,网卡是会接受进来的,因为判断本法IP&掩码与对方IP&掩码是相同的,就判定你们是一个网段的了.如果掩码是255.255.255.0,你的网卡就会把这些数据丢掉不继续传到上层.
------解决方案--------------------
我觉的他说的对,平时都真没注意这个问题。想一想应该是在计算机入网前,配置网络信息时,已经指定了对应的路由。所以这个子网掩码是在数据包出路由装备时封装的。
想想每次把电脑搬一个地方用时,总是要自己配置下网络信息。才能入网使用。
connect、send、recv 等函数为什么只要IP和端口,而不要子网掩码?我看了一下IP的结构,各字段也没有子网掩码成分。如果对方在子网中,那数据包如何找到对方电脑?
send函数需要一个缓冲区,从最上层的协议封装到最下层的过程中,似乎都看不见子网掩码在何时封装。难道不在send函数封装?是在其他函数(socket、bind、listen、accept...)封装吗?我看了一些网络方面理论的书,也没见到何时封装子网掩码
------解决方案--------------------
------解决方案--------------------
应该是在 链路层和物理层
------解决方案--------------------
路由和交换机干的事情
------解决方案--------------------
子网掩码不需要我们操心。
比如校园网,大家的外部ip都是一样的,只是内部ip不一样,怎么区分内部ip,你需要看计算机网络技术这本书中的分址这一章
------解决方案--------------------
其实就是 内网ip的概念
http://baike.baidu.com/view/1233066.htm
------解决方案--------------------
我也不知道底层是怎么回事。
简单说下:
如果是外网,比如 A 和 B
send之后,数据会发到底层网卡,接着是路由器(保存了各个网络之间的路由路径),数据沿着这个路径走到B的路由器,经过网卡,最后被receive。
如果是内网,比如A里面有C、D
C,D连网时,会有一个ip(这个ip动态分配的),C发送数据到B,会经过A,A对数据包的源ip(就是C的内网ip)改为A的ip,接着如上外网一样发出去。收到时,再把目标ip改为C的ip,发到C的电脑上。
------解决方案--------------------
我觉得是路由器,因为路由器保存了大量的网与网之间的映射关系。
------解决方案--------------------
子网掩码是路由器过滤数据包时需要用到的,对我们编程不需要这么底层,除非你要写网关程序
------解决方案--------------------
子网掩码在你的发送端是没用的,在中专端和接收端使用.比如你是192.168.1.1/24,子网掩码改成255.255.0.0,一样用.
这时如果你收到一个来自192.168.2.1的数据,网卡是会接受进来的,因为判断本法IP&掩码与对方IP&掩码是相同的,就判定你们是一个网段的了.如果掩码是255.255.255.0,你的网卡就会把这些数据丢掉不继续传到上层.
------解决方案--------------------
我觉的他说的对,平时都真没注意这个问题。想一想应该是在计算机入网前,配置网络信息时,已经指定了对应的路由。所以这个子网掩码是在数据包出路由装备时封装的。
想想每次把电脑搬一个地方用时,总是要自己配置下网络信息。才能入网使用。