美文网首页
CSAPP网络编程

CSAPP网络编程

作者: 王加冰 | 来源:发表于2019-01-26 17:31 被阅读0次

客户端服务端模型:每个网络应用都是基于客户端-服务端模型的。采用这个模型,一个应用是由一个服务器进程和一个或者多个客户端进程组成。服务器管理着某种资源,并且通过这种资源来为它的客户端提供某种服务。

网络:局域网的大致层次分为三个,集线器、交换机、路由器。互联网最重要的特性是能由采用完全不同和不兼容技术的局域网和广域网组成。通过运行在主机和路由器上的协议软件来消除不同网络之间的差异。

下图展示了主机和路由器如何使用互联网协议在不兼容的局域网间传送数据的一个示例。

1)运行在主机 A 上的客户端进行一个系统调用,从客户端的虚拟地址空间复制数据到内核缓冲区

2)主机 A 上的协议软件通过在数据前附加互联网包头和 LAN1 帧头,创建一个 LAN1 的帧。互联网络包头寻址到互联网络主机 B。LAN1  帧头寻址到路由器。然后它传送到此帧的到适配器。注意,LAN1 帧的有效载荷是一个互联网络包,而互联网络包的有效载荷是实际的用户数据。这种封装是基本的网络互联方法之一

3)LAN1 适配器复制到该帧到网络上

4)当此帧到达路由器时,路由器的 LAN1 适配器从电缆上读取它,并把它传送到协议软件

5)路由器从互联网络包头中提取出目的互联网络地址,并用它作为路由表的索引,确定向哪里转发这个包,在本例中是 LAN2 。路由器剥落旧的 LAN1 的帧头,加上寻址到主机 B 的新的 LAN2 帧头,并把得到的帧传送到适配器

6)路由器 LAN2 适配器复制该帧到网络上

7)当此帧到达主机 B 时,它的适配器从电缆上读到此帧,并将它传送到协议软件

8)最后,主机 B 上的协议软件剥落包头和帧头,当服务器进行一个读取这些数据的系统调用时,协议软件最终将得到的数据复制到服务器的虚拟地址空间。

相关文章

  • CSAPP网络编程

    客户端服务端模型:每个网络应用都是基于客户端-服务端模型的。采用这个模型,一个应用是由一个服务器进程和一个或者多个...

  • linux 链接器 库打桩

    @(linux 编程) 翻看 CSAPP 看到库函数打桩,记录下。 linux 链接器支持库打桩(library ...

  • Java 后台开发学习规划

    基础 < > 除GUI编程之外的其他基础部分 <<深入理解计算机系统>>(CSAPP), <<计算机操作系统>> ...

  • bomb lab 解题报告

    对应课本csapp 的实验 https://hakula.xyz/csapp/bomblab.html[https...

  • 2018-10-10 TEST CSAPP

    2018-10-10 TEST CSAPP 2018-10-10 TEST CSAPP 2018-10-10 TE...

  • Android 网络编程 目录

    Android 网络编程 目录 Android 网络编程1 Http协议Android 网络编程2 Okhttp缓...

  • Linux网络编程篇之ICMP协议分析及ping程序实现

    Linux网络编程系列: Linux网络编程篇之Socket编程预备知识 Linux网络编程篇之TCP协议分析及聊...

  • iOS关于HTTP协议和网络编程

    1.网络编程 1>什么是网络编程? 网络编程,是我们iOS程序开发者针对网络模块进行得代码编程,是作为一个资深开发...

  • 网络编程

    网络编程 网络编程: 网络编程主要用于解决计算机与计算机(手机、平板..)之间的数据传输问题。 网络编程: 不需要...

  • 网络基本了解

    网络基础 问题:为什么要学习网络编程?(1)网络编程是一种实时更新应用数据的常用手段(2)网络编程是开发优秀网络应...

网友评论

      本文标题:CSAPP网络编程

      本文链接:https://www.haomeiwen.com/subject/lupijqtx.html