分层

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

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. Word文档学习小练习链接

    1. < Word2010初学> https://www.toutiao.com/i6487370439910752782/ 2. <Word2010格式化可爱的家乡> htt ...

  2. JSP页面隐藏了哪些对象

    注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6513312446378148356/ 1.<JSP页面实际上就是Servlet> 2.<JSP页 ...

  3. day 18 C语言顺序结构基础定义1

    (1).有以下程序: 程序运行后的输出结果是[B] (A).3,5,5,3 (B).3,5,3,5 (C).5,3,3,5 (D).5,3,5,3 这个题其实也可以弄成改错题,传到函数里面要对其值操作 ...

  4. 学习javaScript必知必会(3)~数组(数组创建,for...in遍历,辅助函数,高级函数filter、map、reduce)

    一.数组: 1.js是弱语言,js中的数组定义时:不用指定数据类型.不用功指定数组长度:数组可以存储任何数据类型的数据 2.数组定义的[ ] 的实质: [] = new Array(); {} = n ...

  5. tmux安装配置与使用

    tmux安装 sudo apt-get install tmux tmux配置 在家目录下操作 cd git clone https://github.com/gpakosz/.tmux.git ln ...

  6. Python 根据id生成唯一码

    Python 根据id生成唯一码 最近业务中遇到需要分享某个文案,复制文案打开APP需要提取文案中包含的id,但又不想明文暴露id,所以需要对id进行加密,很想让前端来做,可惜多个前端协调起来不方便( ...

  7. 如何在pyqt中给无边框窗口添加DWM环绕阴影

    前言 在之前的博客<如何在pyqt中通过调用SetWindowCompositionAttribute实现Win10亚克力效果>中,我们实现了窗口的亚克力效果,同时也用SetWindowC ...

  8. ByteArrayOutputStream内存流

    简介 ByteArrayOutputStream 对byte类型数据进行写入的类 相当于一个中间缓冲层,创建ByteArrayOutputStream类实例时,内存中会创建一个byte数组类型的缓冲区 ...

  9. Properties打印流

    简介 java.util.Properties 继承于 Hashtable ,来表示一个持久的属性集.它使用键值结构存储数据,每个键及其对应值都是一个字符串.该类也被许多Java类使用,比如获取系统属 ...

  10. Git refusing to merge unrelated histories (拒绝合并不相关仓库)

    感谢原文作者:lindexi_gd 原文链接:https://blog.csdn.net/lindexi_gd/article/details/52554159 本文讲的是把git在最新2.9.2,合 ...