
OSI是被提取抽象出来的系统间通信模型,中文意思是“开放式系统互联”
PC a向PC b发送数据包的过程:
a在内存中通过定义的语言生成数据包
将数据包通过总线传给TCP/IP协议处理单元,告诉对方的IP地址、UDP还是TCP、端口号
TCP/IP处理模块收到包之后,封装,通过总线发送给以太网卡
以太网卡再进行编码,变成高低电平震荡发给交换机
交换机将数据包交换到b的接口
b输送到以太网卡的解码芯片,去掉以太网头然后产生中断,将数据包送到内存
TCP/IP处理模块提取IP头和TCP头,以便区分应该输送到哪个应用程序的缓冲区内存。
送到b的应用程序缓冲区内存
应用层是OSI的最上层,表示一个系统对另一个系统要传达的最终消息。
只关注数据, 不关注指令如何发送
表示层就是对应用层数据的一种表示。
颜色、位置等信息
发送方必须用双方规定好的格式来表示信息:可以嵌入在实体数据中。
加密
会话层:建立会话交互机制。实际是双方的应用程序之间的交互。
应用层、表示层、会话层的数据内容都被封装起来,交给押运员传输层。
TCP/IP只有4层:应用层、传输层、网络层、物理链路层,它将OSI的应用层、表示层、会话层合并为一层,即应用访问层。意思是这个层全部与应用程序相关的逻辑,与网络通信无关。应用程序只需要调用下层的接口就可以完成通信。
下四层的作用是把上三层的数据成功送到目的地。
典型的传输层程序如下:
TCP协议的作用是保证上层数据能传输到目的地。类似货运公司的押运员,不管通过什么渠道(直达还是下一跳),不管物理链路的类型,只要送到即可。
如果出现错误,需要重新发送。每件货物到了目的地必须找收件人签字(TCP的ACK应答包)或者一批货物到了以后一次性签收。(滑动窗口)
最后回公司登记
TCP处理拥塞和流量控制。路由器是调度中心,它可以决定走哪条路,TCP没有这个权力,所以如果发生了拥挤就只能通知后续的货物慢点发。如果道路畅通,则通知后面的货物加速发送。
TCP是通过接收方返回的是ACK应答来判断链路拥挤的。如果半天都没收到对方的签字,说明拥塞,有丢失
** 传输层的程序一定运行在通信双方的终端设备上。而不是在中间的互联设备上。
因为传输层是一种端到端的保障机制,必须保证成功收到了并成功处理数据**,才算发送成功了。如果只到了对方的网卡,但是断电了,也不叫端到端保障。
调度怎么知道货物送到哪里,是通过网络层
客户把货物交给货运公司的时候,会填写目的地址,至于应该走哪条路,统统不管,全部交给网络层处理。
货运公司为每件货物贴上IP头地址标签
货运公司掌握了全球范围的地址信息(路由表)
选择了一条路就上路。
货物每中转到一个地方就交给那个地方的调度,由调度来决定下一站到哪里。
旧调度不必告诉新调度最终的目的怎么走,因为所有调度都知道最终的目的。
比如,新疆到青岛没有直到的火车,只能去北京转出。
新疆的调度查找路由表,发现必须先到北京。在货物上贴上青岛标签,而不是北京的标签,但是会将货物发到去北京的火车上。
货物到北京,查看最终的目的地,查找路由表,此路由表与新疆的表不同。于是将货物送到去青岛的火车
路由器就是调度的角色
如从青岛访问北京的服务器
首先必须知道服务器的IP地址,用这个IP地址作为最终目的地址组装成数据包,发送给青岛的Internet提供商的路由器
这个路由器解析目的IP地址,发现应该从1号端口发送出,发到了河北的另一台路由器。
河北路由器根据目的IP查找路由表,发现需要从8口出。
发到了北京的路由器。
最终到了北京的服务器,将这个包传送到这台服务器的网卡,并提交到TCP/IP协议处理的内存空间。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-58345-1.html
简直屁话
那就是淘宝直通车
应给强硬回击