• tcp/ip


    对于tcp和udp

    流量控制:

         ngle算法和滑动窗口协议。

    拥塞控制:

         慢查询

    ip层的功能

    ==============================================================

    ip层这个东西其实蛮实在,他就把数据交付给链路层。他唯一做的事情,就是:选路由。交互到指定的路由器。

    但是对于大多数链路层来讲,它都有一个最大传输单元(MTU),表示能够发送数据量的大小,它

    是由硬件决定的。所以ip层会对数据分组进行分片,对端的ip层然后对这写数据报进行重组。组成一个报文交付给上层。

    但是,一旦某个数据报丢失了,ip层是没有缓存机制的,丢失了,就需要对所有的分组进行重传。

    tcp和udp的本质区别 || udp的一次发送的数据过大的,话就需要全部重传!

    ==============================================================

    对于udp呢,由于他上层没有任何控制机制,他是直接从应用层直接交付给了ip层,如果一旦你发送的这个数据包过大

    ,他分组了,一旦某个分组丢了。需要你重新传所有你发送的数据(sendto一次的数据)。

    对于tcp呢,三次握手的时候,他会协商一个mss,从而尽可能的保证tcp的每个报文在ip层不分组。

    然后tcp有缓存机制,他会超时重传,然后把完整的数据包再次重组之后交付给内核的缓存。

    而可怜的udp没有超时重传的机制,只能讲所有数据交付给ip层,然后ip层无情的对其进行了分片。

    =============

    这里有一个导致不能上网的奇怪问题。

    比如我非要IP层不分片,然后传输出去,人家收到这个包之后,返回一个icmp包

    然后告诉,我靠,你丫神经病吧,哥的链路层真的搞不定!!

  • 相关阅读:
    学习winform第三方界面weiFenLuo.winFormsUI.Docking.dll
    C#中MySQL数据库的备份 还原 初始化
    winform学习笔记02
    mysql与sqlserver之间的关系转换
    mysql数据库使用
    python学习--导入自己的包
    thymeleaf 拼接 超链接
    @RequestParam与@PathVariable的区别
    ifram 实现左侧菜单,右侧显示内容
    Spring 整合Shiro:记住我
  • 原文地址:https://www.cnblogs.com/xloogson/p/2516801.html
Copyright © 2020-2023  润新知