网络编程的作用

ztenv 版主
博客专家认证
2010-03-17 10:57:28
目前在看TCP/IP详解,有如下问题想问下大侠:
1、TCP/IP协议在os中不是都实现了吗?为什么在开发软件的过程中还要具体实现?有实现的必要吗?为什么
2、关于路由寻址,有路由器还不会自动寻址吗?为什么要在软件中维护自己的路由表?然后再根据协议的字段找到目的主机再转发包?
3、由于以前没有接触过网络编程(真正接触),只编写过一些简单的C/S结构的软件,直接使用了socket,通过TCP/IP连接传输数据(自定议的一种协议,这叫TCP/IP编程吗?感觉这叫使用TCP/IP编程)
4、TCP/IP在软件中的主要应用是什么?

不甚明白,所以特此请教,谢谢!
...全文
767 38 打赏 收藏 转发到动态 举报
写回复
用AI写文章
38 条回复
切换为时间正序
请发表友善的回复…
发表回复
ztenv 版主 2011-12-13
  • 打赏
  • 举报
回复
经过一年多的学习和提高,今天又把自己的问题看了一遍,感觉很幼稚;呵呵,不过不是非常感谢各位。
dengv 2011-12-12
  • 打赏
  • 举报
回复
好的 非常好
q493383189 2011-03-16
  • 打赏
  • 举报
回复
正在学习网络编程 学习了
ztenv 版主 2010-04-21
  • 打赏
  • 举报
回复
对不起各位了,今天才结贴,通过这段时间的学习总算有些了解了,非常感谢各位的教导!
某某9 2010-03-23
  • 打赏
  • 举报
回复
xuexi !!!
gunsand 2010-03-23
  • 打赏
  • 举报
回复
网络协议的7层模型知道么
程序员不必关心底层的 只关心socket就可以了。当然如果做路由器开发啥的要关注底层
cattycat 2010-03-20
  • 打赏
  • 举报
回复
实际上现在的网络编程都是在TCP/IP层之上的,除非你干的工作是继续优化TCP/IP协议,比如根据网络拥塞程序确定重传的速度,报文的分片,拥塞窗口最大应该多少,应该是这些了。或者根据应用层需要,修改TCP或IP的某个选项。还有的自己定义一种协议在IP层上,类似UDP的,但是可靠的,比TCP代价小的实现。
就是自己定义协议了。
我们通常的socket在tcp或udp上也就是网络编程。通常这些更关注架构设计以响应更多的连接数,而不会太影响服务器性能。
「已注销」 2010-03-20
  • 打赏
  • 举报
回复
关注一下,跟楼主有同样的困惑
「已注销」 2010-03-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bragi523 的回复:]
你可以使用上层的TCP/IP封装,也可以用原始套接字自己实现
[/Quote]

对头
henujava 2010-03-20
  • 打赏
  • 举报
回复
关注中
ztenv 版主 2010-03-20
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 cattycat 的回复:]
实际上现在的网络编程都是在TCP/IP层之上的,除非你干的工作是继续优化TCP/IP协议,比如根据网络拥塞程序确定重传的速度,报文的分片,拥塞窗口最大应该多少,应该是这些了。或者根据应用层需要,修改TCP或IP的某个选项。还有的自己定义一种协议在IP层上,类似UDP的,但是可靠的,比TCP代价小的实现。
就是自己定义协议了。
我们通常的socket在tcp或udp上也就是网络编程。通常这些更关……
[/Quote]
非常感谢!及楼上诸位的回答,也希望此帖能帮助和我有同样困惑的同行......
明天去云南度假,四月份再结此贴......
希望还有大侠有更详细的解说......
winterlc 2010-03-20
  • 打赏
  • 举报
回复
维护路由表应该是在p2p中应用的,有这个路由表,你才可以直接向对方的外网端口发包,而不需要服务器中转,当然一般都是先连服务器,服务器再把对方的地址及端口发给你,同时,服务器也会记住你的地址及端口。或者通过一些手段探测中间的路由节点,组成一个路由表,通过这个表可以让对方知道如何连接你。
niejimaoo 2010-03-20
  • 打赏
  • 举报
回复
三次握手: 
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
  第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
  第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
  第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端 三次握手协议和服务器进入ESTABLISHED状态,完成三次握手。
冻结 2010-03-20
  • 打赏
  • 举报
回复
建议你还是从socket开始吧!
推荐:
《UNIX 网络编程》或《Windows 网络编程》

以后成了小牛,
再回头再看TCP/IP协议。
你现在可以看看《计算机网络》中讲的TCP/IP 部分,
先稍作了解,有个印象。
chichenzhe 2010-03-18
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20100317/11/ab35220b-e991-424e-bc75-af936a13206f.html

我的帖子在这 帮我看看,LZ
ztenv 版主 2010-03-18
  • 打赏
  • 举报
回复
你说的维护路由表不对吧,一般软件不管这些事情,这个是网络层的事,路由器和交换机中的软件才干这个事情。一般软件最多维护一个DNS的表,就不用发送DNS报文了
//可能就是DNS表,虽然和路由寻址类似的过程,

你那种C/S结构不叫TCP/IP编程,只能是Socket编程。
//TCP/IP编程具体指什么?协议的实现?修改?定制?
非常感谢!(加菲猫)
ztenv 版主 2010-03-18
  • 打赏
  • 举报
回复
唉,自己慢慢的摸索了。。。谢谢耐心解答的朋友!
cattycat 2010-03-18
  • 打赏
  • 举报
回复
你的问题很多啊。TCP/IP协议已经实现好了,一般的socket编程都是在TCP之上或者UDP之上的,如果自己要在自己的程序中处理IP或再底层的包,就需要通过Raw Socket来处理了。
在开发软件的过程中,一般不需要自己再实现TCP和IP协议了,应用程序一般都是工作在IP协议之上的,有的大型游戏,为了克服TCP协议的延时问题,自己在IP协议层之上实现了可靠UDP协议,能提高包传递速度。
你说的维护路由表不对吧,一般软件不管这些事情,这个是网络层的事,路由器和交换机中的软件才干这个事情。一般软件最多维护一个DNS的表,就不用发送DNS报文了。
你那种C/S结构不叫TCP/IP编程,只能是Socket编程。
了解TCP/IP协议有用,对一些高级网络工程师他们会自己更改TCP底层协议的实现,来提高网络速度。百度面试还问过类似的问题呢。

最后一个问题简单就不说了。
chichenzhe 2010-03-18
  • 打赏
  • 举报
回复
LZ, 帮我看看我的帖子。我觉得你对socket的应用理解比我厉害。
ztenv 版主 2010-03-17
  • 打赏
  • 举报
回复
如果仅仅是停留在如何组包(比如:CMPP2.0协议,SIP协议),那还研究TCP/IP协议有什么意义?
加载更多回复(18)

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧