如何才能算得上熟悉TCP/IP编程?(转知乎)

Posted y4247464

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何才能算得上熟悉TCP/IP编程?(转知乎)相关的知识,希望对你有一定的参考价值。

1、

作者:匿名用户
链接:https://www.zhihu.com/question/20795067/answer/16259037

能进行网络编程

1.如果你说你会select,epoll,iocp模型,那会让对方觉得更靠谱
2.如果你说出你做过im,下载之类那会让对方来兴趣.
3.如果你说设计了通讯协议,会让对方觉得更贴切
4.如果你说做过,熟悉, ftp http snmp smtp 这些简单的老古董协议,会加分,但不大.
5.如果你说熟悉bt,emule,udt等协议,那会对你很有好感.
6.如果你说你破解过某大牌 qq,360内某通讯协议,那会对你加分很大.

我对熟悉的定义是:闭着眼能想起原理和实现,能和其他人侃侃而谈,能在搜索的帮助下,不慢的整出来.

精通的定义是:观点一针见血,实现一挥而就.
2、
作者:灵剑
链接:https://www.zhihu.com/question/20795067/answer/113142971

大部分提这个的到最后都用不上socket编程,毕竟现在是WebService的时代,大部分时候都可以把对外提供服务的协议限定在HTTP、WebSocket和JSON-RPC三种协议上。这就看你对岗位的了解了。
而且熟悉协议和熟悉编程本质上来说是两个要求啊……熟悉协议是指底层(三层及以下)数据包交换的规则,而熟悉socket编程,指的是熟悉socket, bind, listen, accept, recv, send等一系列接口,这个可要比熟悉协议简单多了。至于真的称得上熟悉协议的我觉得没多少,我做网络相关也不会指望招人的时候能来个熟悉TCP协议的,比如说窗长为什么最多是2^30字节,窗长和带宽、延迟各自是什么关系,TCP有哪些选项,TCP选项如何协商,为什么初始的seq序号需要在不同五元组上独立生成,TCP协商的MSS与实际发送的包长和payload大小是什么关系等等,说实话真的有点难,TCP作为一个有状态的协议是非常难懂的。RFC都修了好多个版本了。
熟悉socket编程相对来说就简单多了,主要要点在于理解TCP是个流(所以真心不要再问为什么会“粘包”了),是可靠传输,有缓冲区限制,然后理解一下每个接口的作用和使用方法就行了。然后了解下如何使用多线程和epoll/select同时处理多个socket,tcpserver的一般性的编写方法等等,足够了
 
 

以上是关于如何才能算得上熟悉TCP/IP编程?(转知乎)的主要内容,如果未能解决你的问题,请参考以下文章

太好玩了,爬虫部署API加小程序,一条龙玩转知乎热榜!

网页上显示数学公式目前哪种方案最好? 来自知乎

什么样的程序员才算得上优秀?

Linux 技术干货 ?拿来吧你

Python爬虫从入门到放弃(二十四)之 Scrapy登录知乎

什么样的程序员才算得上优秀,把导师曾对我说的话送给大家(比代码更重要的事)