Python网络编程——UDP

Python网络编程——UDP

UDP

IP 协议只负责尝试将每个数据包传输到正确的机器。如果2个独立的应用程序要维护一个会话的话,还需要两个额外的特性。这两个特性是由 IP 层以上的协议来提供的。

  • 需要为两台主机之间传输的大量数据包打上标签,这样就可以将网页的数据包和用于电子邮件的数据包区分开来,而这两种数据包也可以与该机器正在进行的其他网络会话使用的数据包分隔开,这一过程叫做多路复用(multiplexing)
  • 对两台主机间独立传输的数据包流发生任何错误,都需要进行修复,而丢失的数据包也需要进行重新传输,直至成功发送到目的地。另外,如果数据包到达时顺序错乱,则要将这些包重组回正常的顺序。最后要丢弃重复的数据包,以保证数据流中的信息没有冗余,提供这些保证的特性叫做可靠传输(reliable transport)

第一个是用户数据报协议(UDP),UDP协议只解决上述的第一个问题,UDP 协议提供了一个端口号,用于对目标为同一机器上的不同服务的多个数据包进行适当的多路分解。虽然支持多路复用和分解,但使用 UDP 协议的网络程序仍需要自己处理丢包重包和包的乱序问题。

第二个是传输控制协议(TCP),TCP 解决了上述2个问题,它跟 UDP 一样,使用了端口号来支持多路复用和
分解。除此之外,TCP 还保证数据流的顺序以及可靠传输,这样一来,尽管连续的数据流在传输时被分为多个数据包吗,而后在接收端再进行重组,但是这些细节都对应用层隐藏了。

Read more
bochs

bochs

Bochs 安装

2020/10/10 更新: Ubuntu20.04下安装Bochs

在学操作系统,想学着自己写一个玩,就找了书来读,第一步就是在 Linux 环境下安装 Bochs(一款开源的可调式虚拟机软件)

配环境什么的,我折腾过很多了,完全不怕!(然后就折腾了一下午)

Read more
Linkers-Loaders-11
Python 网络编程

Python 网络编程

小学期学了一门课叫做"Web框架技术",开心的选了,以为要讲 Web 框架,听了课才明白,讲的是 Web 开发,作业是用框架写个个人网站。

我: …

默默拿出自己从图书馆借的书《Python网络编程》,从头开始学习一些 web 开发基础的东西:UDP,TCP,HTTP客户端和服务端,SSL/TLS,以及服务器架构。

虚假的 WEB 框架技术: 使用 vue + django 完成一个个人网站
真正的 WEB 框架技术:学习手撕服务器程序(希望能做到吧)

  • 联动一下 Django 源码的学习的系列
  • 大三感觉比较忙,希望不要鸽
Read more
程序员的自我修养——Linux共享库

程序员的自我修养——Linux共享库

Linux 共享库

共享库(Shared Library)其实在文件结构上和共享对象没有什么区别,Linux 下的共享库就是普通的 ELF 共享文件。由于共享对象可以被各个程序使用,所以它就成了库的很好的存在形式。

Read more