Skip to content

计算机网络

引言

网络实例

  • PAN :个域网
  • LAN:局域网
  • MAN:城域网
  • WAN:广域网
  • Internet:特指遵循TCP/IP标准,利用路由器将各种计算机网络互连起来形成的覆盖全球的特定互联网。

互联网构成

  • 网络边缘:端系统,也就是主机host(服务器,客户端(AR、computer))

  • 网络核心:分组交换设备(路由器,链路层交换机)和通信链路(光纤...)构成的网状网络:

    1. 路由的功能:确定数据分组从源到目标所使用的路径,产生一个叫路由表的东西

    2. 转发的功能:路由器或交换机将接收到的数据分组(也就是包交换)转发出去,并确定转发出去的接口/链路:根据从“入接口”收到分组头中的目的地址,查找本地路由表,确定“出接口”

接入网

目的:主机和边缘路由器相连。(比如通过光纤,以太网,拨号上网,WIFI(WLAN),4G/5G(连接基站),同轴电缆)

中东,欧洲,美国的连接方式:DSL,ADSL(慢)

接入网以及链路的物理介质:

  1. 引导型介质:固体介质如光纤

  2. 非引导型介质:信号自由传播(电磁波等

建立网络连接的方式

  1. 电路交互(频分或时分)(无法应对互联网的突发流量)
  2. 存储转发:(接收到完整数据报文才发送)
  3. 分组交换(包交换):

    每个分组的首部都含有地址(目的地址和源地址)等控 制信息,同时每个包走的路由也不同。

    主机A和B的报文分组按需共享带宽,称为统计多路复用(statistical multiplexing)

协议与分层结构

服务和协议的区别:

​ 服务是下层通过层间接口向上层提供的功能,

​ 协议是控制对等实体之间通信的规则,实体通过协议来实现它提供的服务

  • OSI模型

  • TCP/IP模型

    1. 链路层:描述了为满足无连接的互联网络层需求,链路必须具备的功能

    2. 互联网层:允许主机将数据包注入网络,让这些数据包独立的传输至目的地,并定义了数据包格式和协议(IPv4协议和IPv6协议)

    3. 传输层:允许源主机与目标主机上的对等实体,进行端到端的数据传输:TCP,UDP

    4. 应用层:传输层之上的所有高层协议:DNS、HTTP、FTP、SMTP...

  • 端口号(port number):

    用来区分一个主机上不同的进程

    进程标识:主机地址(IP地址)+port number

实验中的一些事情

如何使用docker进行cs144的实验:

docker如何配置相关实验环境

首先,不能直接Build an Image from a Dockerfile,挂梯子也会存在域名被污染,下载不了相关东西。所以

docker pull ubuntu:23.10

之后

docker run --name cs144_lab -itd ubuntu:23.10

之后启动

docker exec -it cs144_lab bash

创建一个虚拟环境

之后安照这个文件依次下载:

FROM ubuntu:23.10


# For cs144 lab
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
    git cmake gdb build-essential clang curl wget \
                        clang-tidy clang-format gcc-doc \
                        pkg-config glibc-doc tcpdump  telnet

# RUN apt-get install -y tshark

# For cmake-examples
RUN apt-get install -y libboost-all-dev libprotobuf-dev protobuf-compiler \
                        cppcheck clang-3.6 ninja-build python3 python3-pip
RUN pip3 install conan

# install gdb from source
RUN apt-get -y remove gdb && apt-get -y autoremove
WORKDIR /
RUN wget http://ftp.gnu.org/gnu/gdb/gdb-13.1.tar.gz
RUN tar -zxvf gdb-13.1.tar.gz
RUN apt-get -y install texinfo
RUN apt-get -y install libgmp-dev libdebuginfod-dev
RUN cd gdb-13.1 && mkdir build && cd build && ../configure && make
WORKDIR /
RUN cd gdb-13.1/build && make install

如果下载太慢,可以修改容器里的文件sources.list为:

deb http://mirrors.zju.edu.cn/ubuntu-ports/ mantic main restricted universe multiverse
deb http://mirrors.zju.edu.cn/ubuntu-ports/ mantic-updates main restricted universe multiverse
deb http://mirrors.zju.edu.cn/ubuntu-ports/ mantic-backports main restricted universe multiverse