• 每日技术:读《作为前端的你了解多少tcp的内容》笔记


    原文地址:作为前端的你了解多少tcp的内容

    学习笔记如下:

    OSI网络分层,从上到下分别是:

    • 应用层(Application)
    • 表示层(Presentation)
    • 会话层(Session)
    • 传输层(Transport)
    • 网络层(Network)——路由器
    • 数据链路层(Data Link)——交换机
    • 物理层(Physical)——网卡、集线器(Hub)

    抓包

    利用百度首页做一个抓包实验

    1. 下载安装wireshark

    2.wireshark初始界面长这样,记得选择一个网络

    3.菜单-捕获-捕获过滤器

    选择HTTP TCP port(80)或TCP only

    4.打开命令行窗口 ping www.baidu.com 获得ip

    5.在应用显示过滤器...的输入框输入:ip.addr==180.101.49.12(上面获得的ip)

    观察第一条protocol为TCP的信息

    Source: 我们本地电脑的ip

    Destination: 百度的服务器ip (表示我们本地ip向百度服务器ip发了第一个包)

    Info:

    Seq=0 表示起始的数据信号是0

    Win=64240 表示我们这边的窗口大小是64240

    Len=0 表示我们这边希望接收的包的大小长度是0

    MSS=1460 表示我们这边本次传输能接收的最大包的内容是1460

    下面我们模拟一下三次握手的对话内容:

    A:B,你好,我是A,请求建立连接,我的seq=0,win=64240,我希望本次回应我的内容长度len为0,我本次能接收的最大内容是1460,over

    B:A,你也好,收到你的信息了,我是B,我本次的seq是0(注意,双方的序号是独立计算的,这里都从0开始),我回应你的ack是1(A的seq+1,代表我收到你seq是0的消息了),我的窗口大小是8192,我希望你回应我本次消息的len也是0,我这边能接收的最大回应大小是1452,over

    A:好的,我收到你的回应了,我现在给你发送的seq是1,我回应你的ack事1(B的seq+1),我当前的窗口大小是262656,我希望的回应长度是0,我们建立好连接了,over

    这就是三次握手

    为什么确定一次连接需要三次握手?

    1.tcp协议层是不关心ip的,具体ip的定位是由ip层来决定的,但是tcp层需要确定端口号,所以他会携带source和destination的port信息,以便能找到对应的端口号

    2.sequqnce number实际中使用的SEQ,也就是序号,这个序号起了很重要的作用。我们都知道tcp和udp最大的区别在于tcp是稳定并且有序的。其中seq就可以保证有序。当A向B发送一个数据包时,seq会叠加,每一个传输方在传送数据时都会带上这个信息,另一端能按照这个序号来排序收到信息的顺序,从而保证了信息的传递是有序的,也能通过它来确认有没有出现丢包的情况。

  • 相关阅读:
    移动端摇一摇与重力感应事件
    百度的js日历
    wow.js
    pc网页中嵌入百度地图
    微信小程序之倒计时插件 wxTimer
    IE常见的兼容处理
    particles.js使用及配置
    微信小程序之swiper组件高度自适应
    js获取元素的滚动高度,和距离顶部的高度
    vue实现移动端触屏拖拽功能
  • 原文地址:https://www.cnblogs.com/cathy1024/p/11289663.html
Copyright © 2020-2023  润新知