计算机网络——传输层探究

前言

我们知道,在 TCP/IP 五层协议模型中,最上层是应用层,也就是我们的应用程序(例如我们的浏览器,通过应用层http协议收发数据),之后数据通过传输层下发到网络世界(网络层)当中去。而像网络层的设备和协议,例如路由器和IP协议,数据交付是不可靠的,会存在丢包。而本篇的主角——传输层,解决的正是这样一个问题:两个实体怎样才能在一种会丢失或损坏数据的媒体上可靠地通信

阅读更多

HTTP之旅

HTTP简介

一个 Web 应用程序,首先接触的应用层协议是 超文本传输协议(HyperText Transfer Protocol,HTTP)

HTTP由两个程序实现:一个客户端、一个服务器。其连接模型大致为:

  1. 客户端向服务器发起 请求(request)
  2. 服务器收到请求后,进行 响应(response),返回客户端需要的内容
阅读更多

当你输入一个网址的时候,实际会发生什么?

前言

一个 web 应用是如何运行的?作为软件开发者,我们必须得有一个完整的层次化的认知。这一篇将从浏览器,到 HTTP,HTML,web server,request handles 等方面切入,聊聊当我们输入一个网址的时候,后台到底发生了什么。

阅读更多

TCP之旅

前言

前面两篇介绍 Socket 的文章中,简单描述了 Socket 网络编程的过程。这一篇,主要介绍一下 TCP 的工作原理。包含以下六点:

  1. TCP连接简介
  2. TCP报文段
  3. 连接的建立和断开(三次握手,四次挥手)
  4. TCP可靠在哪里(序号、ACK回复、超时重传)
  5. 滑窗机制
  6. 拥塞控制机制
阅读更多

Socket编程实践(Java & Python实现)

之前在浅谈 Socket 编程一篇中,初步使用 Socket 套接字,在 linux 下用 C 实现了一个客户端/服务器 通信的例子。但是由于C语言比较隐晦难懂,很多自定义的数据结构也偏向于底层,导致我对于 TCP/UDP Socket 的过程理解不深。这一篇,主要站在应用的角度,用实际的例子,补充实践 Socket 通信的过程。一开始为了更好地理解,使用了 Python 语言。2019年1月9日闲来无事,用java重写了一遍,感受对比一下 java 的繁琐和 python 的简洁(真是无趣的家伙)。

  • 参考书籍:《计算机网络:自顶向下方法》(第2章)。

阅读更多

计算机网络漫游

京东图书日买了几本专业书籍。其中一本是《计算机网络:自顶向下方法》,算是很知名的一本介绍计算机网络的书了。今天晚上看了第一章,很是过瘾。大二的计算机网络课程,虽然拿了90+的成绩,但说实话,对计算机网络的很多概念(包括七层模型)都是模糊的。希望看完这本书,能补一补大二欠下的计算机网络的知识吧。决定开坑,把这本书的一些知识点归纳到博客里。

阅读更多

浅谈 socket 编程

计算机通信和socket

计算机程序之间的通信,是进程与进程之间的通信。之前在 Linux 学习中就遇到用管道(PIPE)来让一个进程的输出和另一个进程的输入连接起来,从而利用文件操作API来管理进程间通信。

阅读更多