热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

趣谈网络网络协议笔记二(第十一讲)

趣谈网络网络协议笔记-二(第十一讲)因性恶而复杂,先恶后善反轻松自勉我似乎天性不擅长争斗,但是有些时候,我也必须砥砺前行。强大是和平的前提,而善良不是。前言今天回到家里已经是

趣谈网络网络协议笔记-二(第十一讲)


因性恶而复杂,先恶后善反轻松




自勉



  1. 我似乎天性不擅长争斗,但是有些时候,我也必须砥砺前行。

  2. 强大是和平的前提,而善良不是。




前言

今天回到家里已经是九点半了,然后磨磨蹭蹭洗个澡,洗澡的时候顺便听了会儿B站的视频关于蒋介石为什么会发动四一二反革命事件的起因和经过,然后躺上床= =,单人床,辗转反侧,不是很想动,不过重新想了想,还是起身吧= =!。
许个心愿,一年之内,见到刘超大神= =,交流交流心得。
另外,总感觉自己的笔记做的不够优秀,之前极客时间有看到刘超大神订阅的图像化笔记之类的专栏,还是得找个时间好好研究研究。不然,真的,感觉笔记就白做了。
晚上下班了,感觉思考了一天了,总感觉有些东西没有思考好,就理了理函数式状态机的基础实现,以及想了想如何写自己的笔记,自己才能更好地记住自己感觉已经掌握得体的知识。然后我感觉我找到了我的答案。就是通过动漫的方式!
[image:B44E184F-4447-4412-BAAA-1FD376965BBA-60643-0000D34069A0D5E5/未知.jpg]



OK,在整理完UDP的基础知识之后,我们来到了TCP知识的第一个篇章。如果说UDP是莽夫的话[image:AD7863B8-9EB9-457B-A07F-C884C677D21F-60643-0000D35730045F4B/未知.jpg]
。那么,TCP就是网络协议界的慎重勇者,
[image:03E96497-F4C8-46B6-BC56-33FAA99485AB-60643-0000D36373E2870C/timg.gif]

OK,就按照这个思路来展开TCP协议第一部分的归纳吧~
对于数据的传输,必须要确保”ready perfectly“(通过三次握手),和服务器建立好连接,才会前往打怪(开始传输数据)。
TCP包头的格式如下:
[image:AB6BC837-E9AC-4C2F-8407-052ABEDB0F4A-60643-0000D4B5020C689E/642947c94d6682a042ad981bfba39fbf.jpg]



  • 三次握手:
    首先,我一定会发送一个请求到目标端口来表示我想和你建立连接,这是第一次握手。但是作为慎勇,我绝不能像the shy一样莽,发送了这条信息之后,我就认为连接已经建立了,然后直接传输数据给对方。
    与此同时我开始计时,如果一段时间内没有收到对方没有给我回复,我就重新发送请求,毕竟一路上诸多坎坷,数据丢失也很正常。但是如果到了我设置的超时时间,对方依然没有给我回复,那我就不用继续传输数据了,就是浪费时间了。
    [image:6BDFCE14-5447-41AA-B892-402288393582-60643-0000D4D53A81096F/c067fe62f49e8152368c7be9d91adc08.jpg]

OK,过一会我收到了来自于服务器的回复(第二次握手),里面包含了我的请求序号所对应的确认序号(请求信号+1),和对方的请求信号等信息,所代表的的意思是”OK,我家的床还挺大的,可以连接= =!“。收到这条信息之后,慎重的我还是不能认为连接已经建立了,那对面怎么知道我收到了他的信息呢?对面不知道我有没有收到他的信息的情况下,到底要不要建立连接呢?慎重的我绝对不能让这种事情发生。

于是我给服务器发送了回复(第三次握手),此时,对方确信我收到了他的回复,连接就此建立。此时,此时,虽然可以继续深入交流来确保连接的建立更加慎重,但是已经足够了,既然能通过三次握手,说明网络情况基本没有大的问题,更多的握手次数仅仅是浪费时间以及资源而已,并不能提高多少效能。

然后是基于TCP协议的数据传输,这个部分在下半部分进行归纳。

OK,传输完数据了(已经把怪物打死了),作为慎勇当然还需要反复鞭尸,把骨灰都扬了能才离开(四次挥手断开连接)。
[image:D6DD8C16-A0FC-4830-821D-07F9F6C67EF6-60643-0000D4D73074BBC5/bf1254f85d527c77cc4088a35ac11d13.jpg]

那么怎么样关闭连接呢?当然依然还是数据请求方来请求关闭连接了。
OK,客户端发送一条关闭连接的请求”通话结束了,拜拜!“给服务器。
服务器接收到了这条信息,但是需要一些时间来关闭连接,那就先发送一条信息告诉客户端,让客户端先hold住,不要着急。
此时B可以直接跑路,不再响应A的任何请求,那么此时A会在一直重复发送数据超过MSL(max segment lifetime)后,认为B私自跑路了,就直接发送RST给B,让B知道自己不再管B了。
过一会后,B准备好关闭连接之后发送给A“OK,连接我已经关闭了,你可以安息了”,此时A也可以直接跑路,B也会按照之前A跑路的策略来采取默认方式。A在收到回复时候,关闭连接,同时回复信息给B“OK,我已经关闭连接了”,B在收到A的回复之后正式关闭连接。

TCP状态机,建议和前面的时序图一起看。
[image:0C8ECC41-40B7-430E-B9AD-3A00AF7C86B7-60643-0000D5B4054F817F/fd45f9ad6ed575ea6bfdaafeb3bfb62a.jpg]


推荐阅读
  • MQTT技术周报:硬件连接与协议解析
    本周开发笔记重点介绍了在新项目中使用MQTT协议进行硬件连接的技术细节,涵盖其特性、原理及实现步骤。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 深入解析TCP/IP五层协议
    本文详细介绍了TCP/IP五层协议模型,包括物理层、数据链路层、网络层、传输层和应用层。每层的功能及其相互关系将被逐一解释,帮助读者理解互联网通信的原理。此外,还特别讨论了UDP和TCP协议的特点以及三次握手、四次挥手的过程。 ... [详细]
  • NTP服务器配置详解:原理与工作模式
    本文深入探讨了网络时间协议(NTP)的工作原理及其多种工作模式,旨在帮助读者全面理解NTP的配置参数和应用场景。NTP是基于RFC 1305的时间同步标准,广泛应用于分布式系统中,确保设备间时钟的一致性。 ... [详细]
  • 访问一个网页的全过程
    准备:DHCPUDPIP和以太网启动主机,用一根以太网电缆连接到学校的以太网交换机,交换机又与学校的路由器相连.学校的这台路由器与一个ISP链接,此ISP(Intern ... [详细]
  • 本文深入探讨了MAC地址与IP地址绑定策略在网络安全中的应用及其潜在风险,同时提供了针对该策略的破解方法和相应的防御措施。 ... [详细]
  • NFS(Network File System)即网络文件系统,是一种分布式文件系统协议,主要用于Unix和类Unix系统之间的文件共享。本文详细介绍NFS的配置文件/etc/exports和相关服务配置,帮助读者理解如何在Linux环境中配置NFS客户端。 ... [详细]
  • 三菱PLC SLMP协议报文详解
    本文详细解析了三菱PLC中使用的SLMP协议报文结构,包括其工作原理、通信流程及报文格式,旨在帮助工程师和技术人员更好地理解和运用这一协议。 ... [详细]
  • 使用C# .NET构建UDP点对点聊天应用
    本文详细介绍如何利用C# .NET框架开发一个基于UDP协议的点对点聊天程序,包括客户端与服务器之间的连接建立、数据传输等核心功能。 ... [详细]
  • 本文将详细探讨 Linux 系统中的 netstat 命令,该命令用于查看网络状态和连接情况。通过了解 IP 地址和端口的基本概念,我们将更好地理解如何利用 netstat 命令来监控和管理网络服务。 ... [详细]
  • TCP/IP基础知识详解
    本文详细介绍了TCP/IP协议的基本概念,包括网络层次模型、TCP三次握手过程、四次挥手过程以及TCP与UDP的比较。通过这些内容,读者可以更好地理解TCP/IP协议的工作原理。 ... [详细]
  • 解析EasyCVR平台国标GB28181协议下的TCP与UDP模式
    在使用EasyCVR视频融合平台过程中,用户常遇到关于端口设置的问题,尤其是TCP和UDP模式的区别。本文将详细介绍这两种模式在GB28181协议下的具体应用及差异。 ... [详细]
  • 一面问题:MySQLRedisKafka线程算法mysql知道哪些存储引擎,它们的区别mysql索引在什么情况下会失效mysql在项目中的优化场景&# ... [详细]
  • 本文详细探讨了虚拟化的基本概念,包括服务器虚拟化、网络虚拟化及其在云计算环境中的应用。特别强调了SDN技术在网络虚拟化和云计算中的关键作用,以及网络虚拟化技术如何提升资源利用效率和管理灵活性。 ... [详细]
  • 本文深入探讨了网络编程中的基本概念,如指针、引用和可重入函数,并详细介绍了OSI七层模型和TCP/IP四层模型的功能与协议。同时,文章还对比了HTTP与HTTPS的区别,分析了HTTP请求报文的结构,讨论了TCP与UDP的主要差异,以及滑动窗口协议的工作原理。 ... [详细]
author-avatar
玉米的跟屁虫
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有