草庐IT

高斯课堂 计算机网络(下)

5pace 2023-04-09 原文

第四章、网络层

0、第四章导图

1、网络层概述及IP地址(上)

(1)网络层概述

无连接指的是在网络层这一层次,我们在发送数据的时候,不需要实现建立连接,这种建立连接的可靠性由谁来保证呢?由上一层,传输层来保证

源地址和目的地址是标识IP地址,IP地址是逻辑上的地址,32位,;上一节的MAC地址是烧制在每个电脑中的物理地址,或者说是硬件地址,也是全球唯一的,48位

(2)网络层概述——IP数据报


由于链路层的规定,所以才需要分片

(3)IP地址


IP地址32位,分为两个部分,网络号表示主机或者路由器处于哪个网络中,主机号表示主机或者设备或者接口是在这个网络中的哪个主机

(4)IP地址:分类的IP地址

私有地址指的是不能够在网络上进行转发的,只能存在于内网当中
这些IP地址是怎么跟外部进行通信的呢?它们到了路由器之后,路由器会给这些私有地址映射到一个公有地址上面,这个公有地址其实就是路由器接口公有IP地址?然后再把数据报重新封装一下

如何进行私有地址的转换?其实就是上面所说
并不是所有路由器都可以,只有安装了这个NAT软件的路由器才可以实现内网与外网的沟通

2、网络层概述及IP地址(下)

(1)IP地址:子网掩码与子网划分(???)

上节课中的ABCDE五类编址方式,都是两级IP地址,分为网络号和主机号
子网掩码和子网划分所使用的是三级IP地址,网络号保持不变,主机号分出了一部分作为子网号,剩下继续作为主机号。这样有一个优点,比如在学校里要对不同的系或者不同的楼划分出小网络

首先将子网掩码的最后一个数字248转化成二进制,是11111000,总共是前面三个字节加上这5位,29位是作为网络部分,剩下的三位(11111后面的三个零)就作为主机部分,因此只要在IP地址中找到前29位,让主机位全部为零,就得到主机的网络号

给主机IP地址和子网掩码,就可以马上得出来它的网络部分是多少以及主机部分是多少

(2)无分类编址CIDR

将原来ABCDE的取消,又将子网划分的概念也取消,变成了“网络前缀+主机号”的形式

掩码就是用全1来表示网络前缀

(3)导图

3、网络层重要协议

(1)重要协议:IP、ICMP、ARP、RARP、IGMP

(2)重要协议:ICMP

这些ICMP差错报文都是向发送方发送的,提示出现了一些问题

以上是ICMP差错报文
以下是ICMP询问报文

ICMP询问报文,这个主要是探寻网络中是否有一些可联通或者不可联通情况

(3)重要协议:ARP

(4)重要协议:IGMP

(5)路由选择协议

第五章、传输层

1、传输层概述

(1)传输层概述

(2)TCP协议

(3)TCP连接管理




2、可靠传输、流量控制、拥塞控制

(1)可靠传输

(2)流量控制

(3)拥塞控制

(4)拥塞控制四种方法


3、第五章导图

第六章、应用层

1、应用层

(1)应用层概述

(2)域名解析系统DNS


(3)FTP协议

(4)电子邮件

(5)万维网和HTTP协议


有关高斯课堂 计算机网络(下)的更多相关文章

  1. ruby-on-rails - 使用一系列等级计算字母等级 - 2

    这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,

  2. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  3. 网络编程套接字 - 2

    网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识

  4. 计算机毕业设计ssm+vue基本微信小程序的小学生兴趣延时班预约小程序 - 2

    项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU

  5. ruby - 如何计算 Liquid 中的变量 +1 - 2

    我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我

  6. ruby - 使用 Ruby,计算 n x m 数组的每一列中有多少个 true 的简单方法是什么? - 2

    给定一个nxmbool数组:[[true,true,false],[false,true,true],[false,true,true]]有什么简单的方法可以返回“该列中有多少个true?”结果应该是[1,3,2] 最佳答案 使用转置得到一个数组,其中每个子数组代表一列,然后将每一列映射到其中的true数:arr.transpose.map{|subarr|subarr.count(true)}这是一个带有inject的版本,应该在1.8.6上运行,没有任何依赖:arr.transpose.map{|subarr|subarr.in

  7. arrays - 计算数组中的匹配元素 - 2

    给定两个大小相等的数组,如何找到不考虑位置的匹配元素的数量?例如:[0,0,5]和[0,5,5]将返回2的匹配项,因为有一个0和一个5共同;[1,0,0,3]和[0,0,1,4]将返回3的匹配项,因为0有两场,1有一场;[1,2,2,3]和[1,2,3,4]将返回3的匹配项。我尝试了很多想法,但它们都变得相当粗糙和令人费解。我猜想有一些不错的Ruby习惯用法,或者可能是一个正则表达式,可以很好地回答这个解决方案。 最佳答案 您可以使用count完成它:a.count{|e|index=b.index(e)andb.delete_at

  8. ruby - 检查网络文件是否存在,而不下载它? - 2

    是否可以在不实际下载文件的情况下检查文件是否存在?我有这么大的(~40mb)文件,例如:http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm这与ruby​​不严格相关,但如果发件人可以设置内容长度就好了。RestClient.get"http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm",headers:{"Content-Length"=>100} 最佳答案

  9. ruby - 404 未找到,但可以从网络浏览器正常访问 - 2

    我在这方面尝试了很多URL,在我遇到这个特定的之前,它们似乎都很好:require'rubygems'require'nokogiri'require'open-uri'doc=Nokogiri::HTML(open("http://www.moxyst.com/fashion/men-clothing/underwear.html"))putsdoc这是结果:/Users/macbookair/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/open-uri.rb:353:in`open_http':404NotFound(OpenURI::HT

  10. ruby-on-rails - 如何计算 Ruby/Rails 中 JSON 对象的数量 - 2

    Ruby中如何“一般地”计算以下格式(有根、无根)的JSON对象的数量?一般来说,我的意思是元素可能不同(例如“标题”被称为其他东西)。没有根:{[{"title":"Post1","body":"Hello!"},{"title":"Post2","body":"Goodbye!"}]}根包裹:{"posts":[{"title":"Post1","body":"Hello!"},{"title":"Post2","body":"Goodbye!"}]} 最佳答案 首先,withoutroot代码不是有效的json格式。它将没有包

随机推荐