分层

网络协议通常分不同层次进行开发,每一层负责不同的职责,一个协议簇指的是一组不同层次上的多个协议的组合。

TCP/IP通常被认为是一个四层协议系统:

  1. 链路层:主要是处理与电缆或其他传输媒介的物理接口细节;
  2. 网络层:处理分组在网络中的活动,例如分组的选路;在TCP/IP协议簇中包括IP协议(网际协议)、ICMP协议(Internet互联网控制报文协议)、IGMP协议(Internet组管理协议);
  3. 运输层主要为两台主机上的应用程序提供端对端的通信。TCP/IP协议簇中有两个协议:TCP(传输控制协议)与UDP(用户数据报协议)。
  4. 应用层:主要负责处理特定的应用程序细节,比如Telnet远程登录、FTP文件传输、SMTP简单邮件传输协议、SNMP简单网络管理协议。

一般而言,应用程序通常是一个用户进程,下三层一般在操作系统内核中执行。应用层关系应用程序的细节,对传输过程一无所知;而下三层处理所有的通信细节,对应用程序的细节一无所知。

TCP/IP的分层

以下为《TCP/IP详解》中会介绍到的网络协议。



IP协议是一种不可靠的网络层协议,在《计算机网络:自顶向下方法》中,称IP为“尽力而为”的协议,也就是说它没有保证一定会传输到正确的主机。

TCP协议是一种可靠的传输层协议,其使用IP作为网络层协议,因为IP并不是一个传输协议,所以TCP为了保持可靠性,做了很多用来保证准确性的处理。

UDP协议是一种不可靠的协议,其使用IP作为网络层协议。

ICMP协议是一个IP协议的附属协议,IP层用它来与其他主机或者路由器交换错误报文和其他重要信息。

IGMP是Internet组管理协议,用来将一个UDP数据报多播到多个主机。

ARP(地址解析协议)和RARP(逆地址解析协议)是某些网络接口使用的特殊协议,用来转换IP层和网络接口层使用的地址(MAC地址)。

互联网的地址

最初的互联网地址(IP地址)是分为5类的,但是当时并没有想到互联网最后会是一个全球性的网络,导致这样分类会产生IP耗尽的问题。



网络号为一个32bit的数字,我们常见的网络号是xxx.xxx.xxx.xxx,是因为32位的地址通常写成四个十进制的数字,每一个整数代表了一个字节,称为“点分十进制表示法”。

域名地址

很明显,对于机器存储方便的32bit数字,哪怕是使用了点分十进制表示法,对于人类而言还是不好记忆,所以DNS便出现了,其相当于是一个全球性的分布式数据库,存储的便是域名与IP地址之间的映射。

封装

当应用程序通过TCP传送数据的时候,数据被送入协议栈内,然后逐个通过每一层直到被当做一串比特流送入网络。每一层都需要加一些首部信息,可能还会有尾部信息。

  • TCP传给IP的数据单元:TCP段;
  • IP传给网络接口层的数据单元:IP数据报;
  • 通过以太网传输的比特流:帧;

分用

当目的主机收到一个以太网数据帧时,数据开始从协议栈中由底向上一步步去掉各种协议加上的报文首部,并且检查报文首部中的协议标识,以确定接收数据的上层协议。这个过程称其为分用。

客户-服务器模型

网络应用程序一般在编写的时候都假设一端为客户,另外一端为服务器,目的是为了让服务器为客户提供一些特定服务。

该服务可以分为两种:重复型和并发型;

重复型

一个重复型服务器一般交互步骤如下:

  1. 等待客户请求;
  2. 处理客户请求;
  3. 发送响应给客户;
  4. 重复上述流程;

重复型服务器在2状态无法为其他客户机提供服务。

并发型

  1. 等待一个客户请求;
  2. 启动一个服务器来处理客户请求,可能生成新的进程、任务、线程。生成的新服务器对客户的全部请求进行处理。处理完毕终止服务器;
  3. 重复上述流程;

TCP/IP详解 读书笔记(一):概述的更多相关文章

  1. TCP/IP详解 读书笔记:TCP:传输控制协议

    TCP的服务 TCP为应用层提供一种面向连接的.可靠的字节流服务. 一个TCP连接中,仅有两方进行彼此通信,所以广播和多播不能用于TCP. TCP通过以下方式提供可靠性: 应用数据被切割为TCP认为最 ...

  2. TCP/IP详解学习笔记- 概述

    TCP/IP详解学习笔记(1)-- 概述1.TCP/IP的分层结构      网络协议通常分不同层次进行开发,每一层分别负责不同的同信功能.TCP/IP通常被认为是一个四层协议系统.      如图所 ...

  3. TCP/IP详解学习笔记

    TCP/IP详解学习笔记(1)-基本概念 TCP/IP详解学习笔记(2)-数据链路层 TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议 TCP/IP详解学习笔记(4)-ICMP协议, ...

  4. TCP/IP详解学习笔记 这位仁兄写得太好了

      TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣 ...

  5. TCP/IP详解学习笔记 这位仁兄写得太好了.(转载)

    TCP/IP详解学习笔记   这位仁兄写得太好了   TCP/IP详解学习笔记   这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/20444 ...

  6. 【转】TCP/IP详解学习笔记(二)

    TCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节 1.静态IP选路 1.1.一个简单的路由表 选路是IP层最重要的一个功能之一.前面的部分已经简单的讲过路由器是通过何种规则来根据IP数据 ...

  7. 【转】TCP/IP详解学习笔记(一)

      TCP/IP详解学习笔记   这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/204448.aspx TCP/IP详解学习笔记(13)-T ...

  8. TCP/IP详解学习笔记(9)-TCP协议概述

    终于看到了TCP协议,这是TCP/IP详解里面最重要也是最精彩的部分,要花大力气来读.前面的TFTP和BOOTP都是一些简单的协议,就不写笔记了,写起来也没啥东西. TCP和UDP处在同一层---运输 ...

  9. TCP/IP详解学习笔记(3)-- IP:网际协议

    1.概述      IP是TCP/IP协议族中最为核心的协议.所有的TCP,UDP,ICMP,IGMP数据都以IP数据报格式传输.      IP提供不可靠,无连接的数据报传送服务. 不可靠:它不能保 ...

随机推荐

  1. Hive分析统计离线日志信息

    关注公众号:分享电脑学习回复"百度云盘" 可以免费获取所有学习文档的代码(不定期更新)云盘目录说明:tools目录是安装包res 目录是每一个课件对应的代码和资源等doc 目录是一 ...

  2. AVD模拟器怎么配置上网

    转自:http://blog.csdn.net/you_jinjin/article/details/7228303 方法一 首先,Windows下,配置Adroid环境变量(Win7为例) 1.桌面 ...

  3. access偏移注入原理

    前言:近段时间在学习access偏移注入时,在网上查询了大量的资料,感觉很多资料讲解的十分模糊并且我个人认为有很多不够严谨的地方,于是我便在线下经过大量测试,写出以下文章,如有错误,望指出. 如要转载 ...

  4. Linux下Redis 6.2.6安装和部署详细图文步骤

    Redis(Remote Dictionary Server),即远程字典服务,是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的 ...

  5. IE8中li添加float属性,中英数字混合BUG

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. C++Template(类模板二)

    namespace _myspace{ template<typename T, typename U> class TC { public: TC() { cout << & ...

  7. QMainWindow(二)

    mainwindow.h: #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> class MainWindo ...

  8. yum源 epel源 no package available 更换国内yum源

    有时候安装软件会出现 no package available 解决办法:yum install epel-release 安装完会在/etc/yum.repos.d/目录下下生成两个repo文件: ...

  9. 字节Android Native Crash治理之Memory Corruption工具原理与实践

    作者:字节跳动终端技术--庞翔宇 内容摘要 ​ MemCorruption工具是字节跳动AppHealth (Client Infrastructure - AppHealth) 团队开发的一款用于定 ...

  10. python31day

    内容回顾 网编总结,思维导图 计划 并发编程的开始,计划6天 操作系统1天 进程2天 线程2天 携程1天 今日内容 操作系统 多道操作系统: 从顺序的一个个执行的思路变成:并行轮流使用cpu 一个程序 ...