社区
C++ 语言
帖子详情
网络层是怎么知道目的IP的?
why0727
2010-07-02 02:19:50
网络层的数据包里面包含有一个目的IP字段,但是这个目的IP是怎么获得的呢?应该是应用层知道对方的IP才需要通信,但是应用层知道对方的IP怎么能够传到IP层呢?传输层又不包含目的IP,而且IP层也不会检查传输层的字段啊
...全文
1376
31
打赏
收藏
网络层是怎么知道目的IP的?
网络层的数据包里面包含有一个目的IP字段,但是这个目的IP是怎么获得的呢?应该是应用层知道对方的IP才需要通信,但是应用层知道对方的IP怎么能够传到IP层呢?传输层又不包含目的IP,而且IP层也不会检查传输层的字段啊
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
31 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
do_fork
2010-07-02
打赏
举报
回复
以Linux为例,所有的相关数据都在socket buffer(struct sk_buff *skb)中,
connect时或者accept之前,另一端的ip地址(daddr)会写入到ip头,
使用ip_hdr(skb)可以取得ip头,ip头中包含了daddr.
cswuyg
2010-07-02
打赏
举报
回复
回个技术贴都得截图,说啥好呢……
lzl_2008
2010-07-02
打赏
举报
回复
[Quote=引用 24 楼 why0727 的回复:]
引用 23 楼 zhzxlc_06 的回复:
楼主看下TCP/IP协议的任何一本书
在IP层的分组叫做IP数据包,IP数据包的格式分为首部区和数据区
首部区里就包含了源IP地址和目的IP地址!
这我知道,我问的就是IP数据包首部包含的目的IP地址是怎么来的?应用层绕过传输层直接给它的?
[/Quote]
应用层给传输层,传输层传给网络层。传输层自已不用IP, 也可能直接把IP丢弃。
cattycat
2010-07-02
打赏
举报
回复
你socket编程的时候,一般设置目的IP和端口就行了。socket底层和操作系统会把你的目的IP填充到IP头部,然后获取自己机器的ip填写到IP头部。如果是Raw socket,就需要自己干这些事情了。
aqiu348503
2010-07-02
打赏
举报
回复
TCP传输层的send函数大概是这么实现的
send(socket句柄,数据包)
{
通过socket句柄找到源地址、目的地址
分片
for(每片)
{
网络层数据包 = 源地址+目的地址+传输层数据包
网络层的send(网络层数据包);
}
}
yuanzhang198711
2010-07-02
打赏
举报
回复
这个原理不解释,楼主看下计算机网络ok?
zheyimiao
2010-07-02
打赏
举报
回复
lz是说tcp包没有包含ip地址,ip包却包含了ip地址是吧?
猜想ip层打包的时候直接用了应用层的参数.
why0727
2010-07-02
打赏
举报
回复
[Quote=引用 23 楼 zhzxlc_06 的回复:]
楼主看下TCP/IP协议的任何一本书
在IP层的分组叫做IP数据包,IP数据包的格式分为首部区和数据区
首部区里就包含了源IP地址和目的IP地址!
[/Quote]
这我知道,我问的就是IP数据包首部包含的目的IP地址是怎么来的?应用层绕过传输层直接给它的?
chaoliu1024
2010-07-02
打赏
举报
回复
楼主看下TCP/IP协议的任何一本书
在IP层的分组叫做IP数据包,IP数据包的格式分为首部区和数据区
首部区里就包含了源IP地址和目的IP地址!
why0727
2010-07-02
打赏
举报
回复
看来我发这个帖放错地方了,这里都是搞C++语法的
why0727
2010-07-02
打赏
举报
回复
[Quote=引用 20 楼 hairetz 的回复:]
引用 7 楼 why0727 的回复:
对方的IP只有应用层知道吧,我想不明白的是应用层知道对方IP,怎么把这个IP地址让自己的IP层知道呢
应用层是封装在最外面的一层,应用层能知道ip地址,它怎么会读不到ip头里的目的ip呢。楼主,下个抓包工具看下包结构吧。
[/Quote]
我并不是问IP层怎么读上层传下来的报文,我问的是IP层的报头包含的目的IP对于IP层而言是怎么知道的,这么多人要我看什么书,其实我已经看过了,我就是没想明白这个问题所以才到这里问
猫已经找不回了
2010-07-02
打赏
举报
回复
[Quote=引用 7 楼 why0727 的回复:]
对方的IP只有应用层知道吧,我想不明白的是应用层知道对方IP,怎么把这个IP地址让自己的IP层知道呢
[/Quote]
应用层是封装在最外面的一层,应用层能知道ip地址,它怎么会读不到ip头里的目的ip呢。楼主,下个抓包工具看下包结构吧。
赵4老师
2010-07-02
打赏
举报
回复
《TCP-IP详解卷一:协议》
why0727
2010-07-02
打赏
举报
回复
再说IP层也不会检查传输层的字段啊
why0727
2010-07-02
打赏
举报
回复
[Quote=引用 14 楼 linux7985 的回复:]
引用 5 楼 why0727 的回复:
我知道IP层要包含目的IP,我是问IP层是怎么拿到目的IP的?
你访问一个网站,要不要输入域名和地址啊?
你写一个Socket要连接一台服务要不要提供IP和端口号啊
[/Quote]
所以我问编程时提供的目的IP是怎么进入IP包的报头里面去的?所有的数据不都是应该从应用层开始往下层传的吗?但是我看到在传输层并不包含IP地址字段啊
pengzhixi
2010-07-02
打赏
举报
回复
晕 ,你那报文里面就包含了的啊。
why0727
2010-07-02
打赏
举报
回复
[Quote=引用 10 楼 chonet2009 的回复:]
这句错了:
IP层获取自己的IP和对方的IP并不依靠应用层,
[/Quote]
获取自己的IP是没有问题的,
你说的路由表是路由的问题,我现在是,譬如说要给某个IP发一个信息,这个IP肯定要包含在网络层的数据包里面,网络层怎么获得这个IP的?因为这个IP是在应用层出现的,而应用层的这个数据是如何让网络层知道的?
烈火蜓蜻
2010-07-02
打赏
举报
回复
[Quote=引用 5 楼 why0727 的回复:]
我知道IP层要包含目的IP,我是问IP层是怎么拿到目的IP的?
[/Quote]
你访问一个网站,要不要输入域名和地址啊?
你写一个Socket要连接一台服务要不要提供IP和端口号啊
cattycat
2010-07-02
打赏
举报
回复
看TCP/IP详解第一卷吧,比较好理解。
TCP层有目的IP,目的端口,源IP,源端口。TCP层数据被IP层抽取到目的IP和源IP,协议会自己做这个事情,你自己看不到而已。数据从应用层设置后,协议会帮你设置目的IP,源IP.如果你是原始Raw套接字编程的话,所有的包填充和设置都需要你自己做了。
摩尔信使MThings
2010-07-02
打赏
举报
回复
socket上下文管理
你说的IP地址与socket中的实现是不一样的
所以在应用层你看见的IP是32位的IPV4格式
但是在底层通信的时候,这些信息将按照IP协议转换为固定格式加载IP包头。。
加载更多回复(11)
网络层
协议 ———
IP
协议
IP
协议全称为“网际互连协议(Internet Protocol)”,
IP
协议是TCP/
IP
体系中的
网络层
协议。 双方在进行网络通信时,发送的数据并不是直接从一方的传输层直接发送到了另一方的传输层,而是需要传输层将数据继续向下进行交付,在
网络层
和链路层经过数据封装后再通过网络发送到对方主机,对方主机收到数据后也同样需要在链路层和
网络层
进行数据解包,此时对方的传输层才拿到了发送过来的数据,然后再继续将该数据向上进行交付。............
TCP/
IP
——
网络层
TCP/
IP
——
网络层
1.
网络层
协议
网络层
继承被称之为
IP
层。但
网络层
协议并不只是
IP
协议,还包括ICMP(Internet control Message Protocol)协议、
IP
X(Internet Packet Exchange)协议
IP
寻址:能过上网的设备中,那些
IP
地址可用,那些
IP
地址不可用,都是由
网络层
中的协议来规定的‘ 路由选择:由了
IP
地址之后,我们如何找到这个
IP
地址表示的上网设备,这个过程我们称之为路由选择 这两个功能是我们在
网络层
中两个重要功能
IP
协议
IP
是Inter
【网络】
网络层
协议-
IP
协议
网络层
&
IP
协议基本概念、
IP
协议格式详解、网段划分相关概念、
IP
地址数量限制、私有
IP
和公网
IP
以及路由相关知识。
计算机网络中MAC地址与
IP
地址
1、
IP
地址和物理地址(mac或硬件地址)的区别: 物理地址是数据链路层和物理层使用的地址;
IP
地址是
网络层
及其以上层使用的地址。 2、数据在网络中的传输: (1)连接在通信链路中的设备(主机或路由器)在收到MAC帧时,根据MAC帧的首部中的硬件地址决定收下或丢弃。只有在剥去MAC帧的首部和尾部后把数据上传给
网络层
后,
网络层
在
IP
数据报的首部中找到源
IP
地址和
目的
IP
地址。 (2)应用...
网络层
——
IP
协议
IP
协议全称为"网际互连协议(Internet Protocol)",
IP
协议是TCP/
IP
体系中的
网络层
协议
网络层
解决的问题TCP作为传输层控制协议,其保证的是数据传输的可靠性和传输效率,但TCP提供的仅仅是数据传输的策略,而真正负责数据在网络中传输的则传输层之下的
网络层
和链路层保证数据可靠的从一台主机送到另一台主机的前提当双方在进行基于TCP的网络通信时,要保证将数据可靠的从一台主机送到另一台主机,前提是发送方要有将数据送到对方主机的能力。
C++ 语言
65,194
社区成员
250,524
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章