关闭

我对tcp的初步理解

228人阅读 评论(0) 收藏 举报

 以前总听说tcp/ip协议,感觉很叼,总搞不清是个什么东西。

最近在看unix网络编程,似乎有点懂了,不就是源代码么。也就是内核的一部分,至于是谁规定出来的,是谁写出来的,我想应该是n个牛人协议出来的吧。

以前看书的时候总有这样的问题,为什么有了tcp就可以实现网络的数据传输呢?(是不是我有点SB)。现在总算是有点感觉了。

我说个例子看看是不是这样:

目的:实现两台主机之间的简单tcp通信,就a和b吧。

过程:

1 a想和b通信,那么a就要有b的相关相关信息,为什么?你和别人打招呼都不用知道别人的类似名字之类的东西吗!那a为什么能够知道b的相关信息勒?这就是tcp协议该干的事了,别问我tcp协议在哪儿?它就在你的unix/linux内核里。具体tcp要做的事是把bip,port,等一切相关的信息写到一定的结构里,如sockaddr_in。这就是a要做的基本的准备工作。

2 b呢?它需要有什么准备?你去和别人打招呼,别人准备什么?等着呗,天知道你什么时候和人家打招呼啊,只能等着。~~他只需要有打招呼这个心理准备就行了。回到我们的b上,它只需要听着(listen())有没有外面的连接来就行了。至于listen之前的工作,我就不说了,网上很多详细内容的。行了,b也可以了。

Ps 为什么这样就实现了端对端的通信呢?我以前很纳闷,答案是因为这就是tcp规定的(当然前提是这两个系统里都有tcp这部分的源代码),它说行不就行了!想想自己真是太…….

3 好了,现在可以通信了。

再看看tcp它到底干什么了?我的理解是:两个老外,一个会说德语和英语,一个会说韩语和英语。他们两个人交流时各自用自己的语言,肯定是不通的。此时要是有第三个人他说;“你们为什么不用英语交流呢?”那么他们就可以交流了。没错,Tcp充当的就是第三者,两个老外就是ab,也许他们都有各自的很多通信协议,什么tcp,udp啊,只要找到一个a b都有的通信机制,它们自然就通了。

简单的说tcp就是提供了一个模式。

概念不准,但希望例子多少会有点用,看概念的话,书比我清楚,哈哈

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:16071次
    • 积分:438
    • 等级:
    • 排名:千里之外
    • 原创:28篇
    • 转载:3篇
    • 译文:0篇
    • 评论:0条