第一章 TCP/IP协议族

一、协议族体系结构

  TCP/IP协议族分为四层协议系统,自底向下分别为数据链路层、网络层、传输层、应用层。

  数据链路层常用ARP(地址解析协议)和RARP(逆地址解析协议)。在网络层使用IP寻址,而在数据链路层使用物理地址寻址,ARP就是将IP地址转化为物理地址供数据链路层使用。RARP将物理地址映射为IP地址,适用于某些无盘工作站(不能储存自己的IP)向服务器查询。

  网络层实现数据包的选路和转发。选择中间节点(路由器),确定两台主机之间的通信路径。网络层的核心协议是IP协议,IP协议根据数据包的目的IP地址来选择如何投递:选择合适的下一跳并交给路由器转发。另一个重要协议是ICMP协议,分为两类差错报文和查询报文。

  传输层为两台计算机上的应用程序提供端到端的通信,只关心起始端和目的端不在乎数据包的中转过程。

  其中实线表示各层之间的实体通信,虚线箭头表示逻辑通信线路。

  传输层主要协议有三个:TCP协议、UDP协议和SCTP协议。TCP为应用层提供可靠的、面向连接的和基于流的服务。UPD为应用层提供不可靠、无连接和基于数据报的服务。SCTP是一种较新的传输层协议,为因特网上传输电话信号而设计。

  应用层负责处理应用程序的逻辑。其他层需要保证稳定高效都在内核空间中实现,应用层在用户空间中实现。其中在应用层主要有:ping应用程序,它不是协议。telnet协议是一种远程登陆协议。

二、封装

  应用程序数据在发送到物理网络上之前,将沿着协议栈从上往下依次传递。没层协议都在上层数据的基础上加上自己的头部信息(有时还包含尾部信息),以实现该层的功能。

  经过数据链路层封装的数据称为帧,传输媒介不同,帧的类型也不同。在以太网上传输以太网帧,令牌环网络上传输令牌环帧。以太网帧最大携带1500字节数据,所以过长的IP数据包需要分片。

三、分用

  当帧到达目的主机时,将沿着协议栈自底向上传递。各层协议依次处理帧中本层负责的头部数据,最终将帧交给目标应用程序,这个过程称为分用。

四、ARP协议工作原理

  主机向自己所在的网络广播一个ARP请求,该请求包含目的机器的网络地址。此网络上的其他机器都将收到这个请求,但只有被请求的机器会回应一个ARP应答,其中包含自己的物理地址。(知道他人的IP后通过IP找到他人的物理地址)

五、DNS工作原理

  DNS是一套分布式域名服务系统。每个DNS服务器上存放着大量的机器名和IP地址的映射。DNS查询和应答报文如下:

 

转载于:https://www.cnblogs.com/lr1402585172/p/10999816.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/384224.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二分(三分)+快速幂

之前学习的二分,现在感觉突然理解许多,补一下总结 首先,二分能够解决什么样的问题呢,个人认为,二分能够快速解决已经知道答案范围(线性)但是不知道确切答案的问题,例如在一个有序序列…

pthread_cleanup_push与pthread_cleanup_pop的目的 作用

http://blog.csdn.net/slj_win/article/details/7267483 首先你必须知道pthread_cleanup_push与pthread_cleanup_pop的目的(作用)是什么。 比如thread1: 执行 pthread_mutex_lock(&mutex); //一些会阻塞程序运行的调用,比如套接字的accept,等待客…

动态规划浅谈

接触动态规划这么久了,简单谈一下自己对动态规划的理解。 动态规划名字听起来好像比比较高大上,可是事实上,人家就是比较高大上。(抖个机灵) 刚开始接触动态规划的时候觉得好可怕,这么复杂的问题我怎么能想…

Linux多线程——使用信号量同步线程

http://blog.csdn.net/ljianhui/article/details/10813469/ 信号量、同步这些名词在进程间通信时就已经说过,在这里它们的意思是相同的,只不过是同步的对象不同而已。但是下面介绍的信号量的接口是用于线程的信号量,注意不要跟用于进程间通信…

linux下安装erlang

1.安装Erlang编译依赖: yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget 2.下载Erlang: wget http://www.erlang.org/download/otp_src_19.3.tar.gz 3.解压并安装 tar -xzvf otp_src_19.3.tar.gz cd otp_src_19.3 ./configure --…

Linux 线程同步的三种方法

http://blog.csdn.net/zsf8701/article/details/7844316 线程的最大特点是资源的共享性,但资源共享中的同步问题是多线程编程的难点。linux下提供了多种方式来处理线程同步,最常用的是互斥锁、条件变量和信号量。 一、互斥锁(mutex) 通过锁机制实现线程…

Elixir特性

iex 退出:Ctrl-C 或Ctrl-G再输入q 回车。 帮助文档:h 查看辅函数列表 h IO 查看IO模块帮助 h IO.puts 查看IO模块中的puts函数的文档 编译和运行:创建一个hello.exs的文件。IO.puts "hello world"    //输出hello world 使用el…

Elixir基础

值类型 整数,包括十进制(1234)、十六进制(0xcafe)、八进制(0o765)和二进制(0b1010) 浮点数 原子,原子是常量,用于表现某些东西的名字,…

C++11新特性之八——函数对象function

http://www.cnblogs.com/yyxt/p/3987717.html 详细请看《C Primer plus》(第六版中文版) http://www.cnblogs.com/lvpengms/archive/2011/02/21/1960078.html 备注: 函数对象: 尽管函数指针被广泛用于实现函数回调,但C还提供了一个重要的实现…

分块思想

今天学习了一个算法(这个应该叫做算法吧?)叫做分块(和莫队,但是莫队还没有搞懂,搞懂再来写吧) 听起来很高级,蒟蒻表示瑟瑟发抖。但是学完发现怎么那么像是一种变相的暴力呢。 分块思…

从零开始学C++之STL(八):函数对象、 函数对象与容器、函数对象与算法

http://blog.csdn.net/jnu_simba/article/details/9500219 一、函数对象 1、函数对象(function object)也称为仿函数(functor) 2、一个行为类似函数的对象,它可以没有参数,也可以带有若干参数。 3、任何重载…

树状数组初步理解

学习树状数组已经两周了,之前偷懒一直没有写,赶紧补上防止自己忘记(虽然好像已经忘得差不多了)。 作为一种经常处理区间问题的数据结构,它和线段树、分块一样,核心就是将区间分成许多个小区间然后通过对大区…

命名函数

函数体是代码块 代码块do...end是一种表达式的组织方式。 # ./times.exs下defmodule Times dodef doule(n) don * 2end end 函数调用与模式匹配 代码如下: # ./factorial.exs    计算阶层 defmodule Factorial dodef of(0), do: 1          #终止条件…

STL运用的C++技术(6)——函数对象

http://blog.csdn.net/wuzhekai1985/article/details/6658940?_t_t_t0.20427969420870595 STL是C标准库的重要组成部分之一,它不仅是一个可复用的组件库,更是一个包含算法与数据结构的软件框架,同时也是C泛型编程的很好例子。STL中运用了许多…

列表与递归

头部和尾部 [head | tail ] [1] #head 1 tail [] [head | tail ] [1, 2, 3] #head 1 tail [2, 3] [head | tail ] [] #报错 创建映射函数 我们可以使用一个函数来处理列表中的各个元素,如此可以接受更加复杂的处理,也可以…

优先队列小结

不像栈和队列,虽然STL有较好实现但是我们自己也可以很方便的实现,优先队列自己实现起来就比较复杂,比较浪费时间(而且自己目前也不会233)而优先队列因为其较好的特性经常被使用,因此对它的熟练掌握是做题的…

字典:散列表、散列字典、关键字列表、集合与结构体

字典 散列表和散列字典都实现了Dict的行为。Keyword模块也基本实现了,不同之处在于它支持重复键。 Eunm.into可以将一种类型的收集映射转化成另一种。 defmodule Sum dodef values(dict) dodict |> Dict.values |> Enum.sumend endhd [ one: 1, two: 2, thre…

C++11 学习笔记 lambda表达式

http://blog.csdn.net/fjzpdkf/article/details/50249287 lambda表达式是C11最重要也最常用的一个特性之一。lambda来源于函数式编程的概念,也是现代编程语言的一个特点。 一.函数式编程简介 定义:简单说,“函数式编程”是一种“编程范式”。…

Cutting Codeforces Round #493 (Div. 2)

Cutting There are a lot of things which could be cut — trees, paper, “the rope”. In this problem you are going to cut a sequence of integers. There is a sequence of integers, which contains the equal number of even and odd numbers. Given a limited bud…

Enum、Stream

Enum 其常见用法见&#xff1a;https://cloud.tencent.com/developer/section/1116852 在sort时&#xff0c;如果要获得稳定的排序结果&#xff0c;要使用< 而不是 <。 Stream Stream是延迟处理的&#xff0c;而Enum是贪婪的&#xff0c;则意味着传给它一个收集&#xff…