Unix 网络编程(二)- 你需要知道的传输层协议实现细节。

写在开头:

上一篇中我们分析了并实际运行了第一个socket程序,从而对网络编程的整体设计以及工作流程有了一些了解。作为第二篇文章,在此文中我们将分析网络编程需要的一些理论知识,主要就是TCP/IP协议栈的内容。但是,我们不会枯燥的去讲解这些协议,而且我们的目的也不是去理解这些协议所有的细节,这里我们将会从网络编程的角度去分析传统的协议栈中的运输层协议(TCP, UDP, SCTP), 与纯粹介绍协议的不同,这里是从网络编程的角度去分析协议当初为何这样来设计而不是从协议的角度去分析如何编程,从而能够让我们在避免枯燥理论的同时又可以把握这些理论的实践价值,即当初的协议之所以这样来设计的工程价值。同样,本文的内容主要来自《Unix网络编程 卷一 套接字联网API》第二章的一些总结。

这里再说下我个人写博客的体会。看一本书,看一遍,和之后做习题再看一遍,和能把它写出来,和能把它讲给别人听,和能熟练的应用,这些过程需要花费的工夫区别很大。

下面开始第二篇的内容。

--------------------------------------------------------------------------------------------------------------------------------------------------

1. 什么是Socket 编程

我们首先看一下一个网络通信的过程到底发生了什么,为什么两台独立的机器就可以通信并且相互传递数据。

下面以我们每天都会做的一件事:用户访问一个网页为例:



用户在浏览器中输入ip地址访问一个网页,然后服务器监测到访问之后会回传网页中的内容。在这样一个应用中,我们为简单起见假设服务器和客户端在一个以太网中,网络中传输的数据流的示意图如下:


上图就是是个web请求的完整过程,这里面我们没有使用标准的OSI的七层模型而是以网际协议中实际使用的四层模型为例来进行删除。从用户应用进程的建立到数据的传输需要机器从用户态向内

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值