不如我们再分派一个id吧,他们合营持有这个id就好了。我们把这个id叫做端口(port)。 如许子的话,经由过程ip地址我们可以肯定计算机,经由过程端口我们可以肯定一个或多个过程。
持续,我们要在ip带的信息里规定好我们如许发:
- 起首是来源地址的端标语,8个bit来表示,因为ip琅绫擎已经待了ip地址,我这里就不反复带了
- 然后是目标地址的端标语,8个bit来表示
如许,简单的PCT协定就做好了。
还有一个问题,就是我们要包管发出去的信息是有序的,因为可能有的信息走光纤, 有的信息走Wi-Fi,他们传输速度不一样嘛。
然则我们说好了要把这个协定打造成一个靠得住的协定,可不克不及食言。我想想,怎么让他 靠得住呢,无非就是我发一个信息,你告诉我你收到了,如果你不告诉我,我就发到你告诉我 为止。差不多就是这么个意思。然则呢,又不想构造多个不合的协定,你知道,编程的时刻 如果写一堆的if-else树那可就很蛋疼了。再改改协定:
- 起首是来源地址的端标语,8个bit来表示,因为ip琅绫擎已经待了ip地址,我这里就不反复带了
- 然后是目标地址的端标语,8个bit来表示
- 然后是这个包的序号,8个bit来表示
- 然后是想确认的包的序号,8个bit来表示
咦,点睛之笔耶,这个确认的包的序号,因为我们是双向通信,我发他信息的时刻还可以趁便 确认我收到了他的包啊,真是一箭双雕。
TCP是一个面向流的协定,什么叫流?车流,水流,车流比较形象。车和车之间是分开的, 然则速度一快起来,就可以把它们算作连起来的。TCP也是如许,单个包之间是分开的, 然则却可以看作是连起来,为什么呢?因为每个包里都带了ip地址和端标语,ip地址和端口 号一样的,就可以看作是连起来的 :)
所以我们可以想象一下,我们的ip地址是 192.168.1.1 , 端标语是 1, 目标的ip地址是 192.168.1.2 , 端标语是 2。那我们发送如许的包:
- 111(开端)
- 00000000 11101000(长度)
- 01110010 01101111 01110101 01110100 01100101 01110010(来源MAC地址)
- 01110000 01101000 01101111 01101110 01100101 01110010(目标MAC地址)
- 11000000 10101000 00000001 00000001(来源ip地址)
- 11000000 10101000 00000001 00000010(目标ip地址)
- 00000001(来源的端标语)
- 00000010(目标的端标语)
- 00000001(发送的包的序号是1)
- 00000000(已经确认的包的序号是0,表示啥都没有嘛)
- 01101000 01100101 01101100 01101100 01101111(字符串"hello")
- 000(停止)
duang,就如许,我们构建起了属于本身的靠得住的基于流的双工的协定 :)
- +------------+-----------------------+
- | 层 | 例如 |
- +------------+-----------------------+
- | 应用层 | HTTP协定 |
- +------------+-----------------------+
- | 传输层 | TCP |
- +------------+-----------------------+
- | 收集互连层 | IP |
- +------------+-----------------------+
- | 收集接口层 | 如网线,双绞线,Wi-Fi |
- +------------+-----------------------+
趁便我们还完成了膳绫擎的TODO,经由过程序号我们就可以断定这个包是不是反复了,哈哈哈, 一箭n雕~
TCP三次握手四次挥手滑动窗口拥塞控制等就不匠了棘照样去看《TCP/IP协定详解卷一》吧 :)
应用层
这下我们终于可以宁神大年夜胆的发送消息了,PCT协定是个负义务的协定,如不雅能送到,他就必定 会送到,并且是有序的,如果收集坏掉落了,实袈溱连不上,他就会告诉我收集连不上。
如许子来编程便利多了呀。
如今我想知道浏览器和办事器是怎么通信的。我们来看看百度。
输入 GET / HTTP/1.1 之后回车,百度就给我返回了下面的一长串,然后浏览器再根据 返回的内容进行衬着,这又是一个大年夜话题了,不讲了不匠了棘收工 :)
推荐阅读
【51CTO晃荡】8.26 带你深度懂得清华大年夜学、搜狗基于算法的IT运维实践与摸索为什么打开一个 H5 页面会有一长段白屏时光?因为它做了很多工作,大年夜概是: 初始化 webview -> 请求页面 -> 下载数>>>详细阅读
本文标题:从零构建TCP/IP协议
地址:http://www.17bianji.com/lsqh/36746.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示