https://note.youdao.com/share... 含图解
、
看到拥塞控制和差错控制。
资料
计算机网络(谢希仁)第五版课件.ppt ,章节一层没有目录,可作为以上资料的辅助资料。
再看不懂就做题辅助理解和记忆。
牛客网上没有答案的题目可以:
http://www.ppkao.com/ 搜索题目的答案和解析
不在面经里的题目属于超纲 不必看
文本资料(考研书、知乎)
天勤计算机网络高分笔记(偏口语化,适合转专业和跟面试官聊天)
王道计算机网络高分笔记 适合本专业
计算机网络高分笔记 - 扫描版.pdf
18.6MB
第一章非扫描版:
计算机网络高分笔记(打印版) - 第一章.pdf
2.7MB
计算机网络面试(tcpip)笔试必考与实践总结
https://www.nowcoder.com/disc... 计算机网络部分的面试常考点 牛客网
怎么写教学PPT:
主要内容
学习目标:了解 理解 掌握
考试技巧 -感悟:以这次复习《TCPIP网络编程技术.pdf》为例大部分都不是重点可以粗略带过,一章里主要有那么几句话是重点。 这个结合别人的考试重点可以看出来,再进一步的看前后PPT来理解这些考点。
通过教材 再把自己积累的一些其他应用知识串起来。
单独看PPT中的某一段看不懂,必须从头到尾联起来看,反复推敲。
还是因为计算机网络的理论学得不够扎实,网友的笔记无法辨别它们自己理解错的地方。
所以命令使用理解起来费劲。
本文档使用说明
1、从每小节(##标志)下的次级小标题中可以知道《TCPIP网络编程技术.pdf》(附链接)一定有的内容,进而可以决定是否需要打开《TCPIP网络编程技术.pdf》进行进一步查阅。
2、第1章到第N章/每小节(##标志)下的/ 次级小标题下 /列出的内容 /为笔试面试必考。
3、第2章IP地址的实践笔记(内网IP、公网IP)后
arp、ping(基于ICMP)命令的实践笔记,补充:《计算机网络学习笔记1-网络命令详解ping、arp、ipconfig、tracert、route详解https://segmentfault.com/a/11... 》
4、第7章套接字编程后有 Java TCP/IP Socket编程
网络体系结构、OSI分层、TCPIP协议簇 。 第一章 计算机网络基础
1、网络体系结构的关键要素是协议和拓扑结构。
5、网络应用程序一般是以客户机/服务器模型( Client/Server, C/S)工作。
4、了解其与OSI参考模型之间的关系。
网络层也称IP层。
2、OSI分层 (7层):物理层、数据链路层、网络层(也称IP层)、传输层、会话层、表示层、应用层。
3、掌握TCP/IP协议族的结构,理解其工作原理。
TCP/IP(协议簇)(4层):网络接口层、 网际层、运输层、 应用层。
TCP/IP(协议簇)五层协议 (5层):物理层、数据链路层、网络层、运输层、 应用层。
每一层的作用如下:
物理层:通过媒介传输比特,确定机械及电气规范(比特Bit)
数据链路层:将比特组装成帧,提供相邻两个端点之间的(相邻的点到点,点不只是是主机,还包括其他设备)(帧Frame)
网络层:它在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,将数据组装成包,将包设法从信源经过若干个中间节点传送到目的设备(信宿)上,点到点通信。(包PackeT)
传输层:提供的就是应用程序间的通信。提供端到端(端指的是端口)的可靠报文传递和错误恢复(段Segment)
会话层:建立、管理和终止会话(会话协议数据单元SPDU)
表示层:对数据进行翻译、加密和压缩(表示协议数据单元PPDU)
应用层:提供一组常用的应用程序。允许访问OSI环境的手段(应用协议数据单元APDU)
以上可能有错。
封装复用思想。 下层向上层提供服务,上层封装下层的数据结构
各层之间如何相互作用(数据传输从应用层到链路层有哪些变化)?
在浏览器中输入www.baidu.com后执行的全部过程
主要是分析TCP/IP各协议层的变化。
1、从应用层到传输层到网络层: 客户端浏览器 通过DNS 解析到www.baidu.com的IP地址220.181.27.48,通过这个IP地址找到客户端到服务器220.161.27.48的路径。客户端浏览器发起一个HTTP会话到220.161.27.48 服务器,然后通过TCP进行封装数据包,输入到网络层。
2、在客户端的传输层发送报文段Segment,把HTTP会话请求分成报文段,添加源和目的端口,如服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口如5000,与服务器进行交换,服务器把相应的请求返回给客户端的5000端口。然后使用IP层的IP地址查找目的端。
3、网络层发送包Packet,客户端的网络层不用关心应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器的路径,期间可能经过多个路由器。
4、客户端的链路层,包通过链路层发送到路由器,通过邻居协议查找给定IP地址的MAC地址,然后发送ARP请求查找目的地址,如果得到回应后就可以使用ARP的请求应答交换的IP数据包现在就可以传输了,然后发送IP数据包到达服务器的地址。 (感觉有错)
先这样记吧,不过 ARP、RARP、IP、ICMP都是网际层的协议。
更多答案:https://www.nowcoder.com/ta/review-network/review?tpId=33&tqId=21195&query=&asc=true&order=&page=7
18、计算机网络中不同层有用到哪些协议?
物理层:物理层定义的是规范,不能说是协议,规范有:RJ45、EIA/TIA(机构名) RS-232、CLOCK、IEEE802.3 (中继器,集线器,网关)
数据链路:PPP、FR、HDLC、VLAN、MAC (网桥,交换机)
网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、 (路由器) 网络层封装了上一层,所以路由器应该也可以算在上一层之间
传输层:TCP、UDP、SPX
会话层:NFS、SQL、NETBIOS、RPC
表示层:JPEG、MPEG、ASII 数据的压缩 和编码
应用层:超文本传输协议( HTTP),简单网络管理协议( SNMP),文件传输协议( FTP),简单邮件传输协议( SMTP),域名系统( DNS),远程登录协议( Telnet)
第2章 IP地址
1、掌握IPv4地址的分类和寻址规则。
IP地址的分类(IPv4地址分为A、B、C、D、E五类,出去特殊作用的D、E两类,剩下的A、B、C三类地址是我们常见的IP地址段。)(具体见PPT)
A类地址:以0开头, 第一个字节范围:0~127(1.0.0.0 - 126.255.255.255);
B类地址:以10开头, 第一个字节范围:128~191(128.0.0.0 - 191.255.255.255);
C类地址:以110开头, 第一个字节范围:192~223(192.0.0.0 - 223.255.255.255);
2、IPv4地址的【实践】经验补充,内网IP、公网IP:
A类地址的容量最大,可以容纳16777214个主机,B类地址可以容纳65534个主机,C类地址可以容纳254个主机。 在这三类地址中,绝大多数的IP地址都是公有地址(=外网IP=外部IP),需要向国际互联网信息中心申请注册。但是在IPv4地址协议中预留了3个IP地址段,作为私有地址(保留地址=内网IP=内部IP),供组织机构内部使用。 这三个地址段分别位于A、B、C三类地址内:
A类地址:10.0.0.0–10.255.255.255
B类地址:172.16.0.0–172.31.255.255
C类地址:192.168.0.0–192.168.255.255
所以局域网在选取使用私有地址时,一般会按照实际需要容纳的主机数来选择私有地址段。常见的局域网由于容量小,一般选择C类的192.168.0.0作为地址段使用,所以大多数局域网选择192.168.0.0/24或者192.168.1.0/24作为自己的IP地址段 ,一些大型企业就需要使用B类甚至A类地址段作为内部网络的地址段。
公网地址不同,内网IP可能一样。
利用 curl ifconfig.me 查询外部IP、查询外网IP。
最后需要补充说明的是,由于NAT和子网掩码的存在,实际在使用中,一个C类大小的局域网也可以选择A类的10.0.0.0网段作为自己的IP地址段。大多数局域网之所以仍然选择192.168.0.0/24或者192.168.1.0/24作为自己的IP地址段,更多的是因为约定成俗或者说网管个人习惯的关系。
子网局域网的广播地址通常以255结尾
3、子网、超网,进而掌握掩码的概念及其配置方法。
IP地址 = 网络地址 + 主机地址。
IP地址与子网掩码相与得到子网地址
4、地址解析的概念,ARP和RARP(反向地址解析协议),了解它们的数据报格式,了解代理ARP的
概念。
ARP是地址解析协议是根据给定的IP地址获取对应的物理地址,简单语言解释一下工作原理。
主机A将询问“ip对应的mac地址是多少”广播到网络内,正确的主机单播返回结果。广播发送ARP请求,单播发送ARP响应。
1:首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。
2:当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机IP地址,源主机MAC地址,目的主机的IP地址。
3:当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。
4:源主机收到ARP响应包后。将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
广播发送ARP请求,单播发送ARP响应。
5、 【实践笔记】arp命令的应用
常用参数
-a 用于查看所有网络接口缓存(自己的ARP缓冲区中建立一个ARP列表)中的项目。本地局域网中的所有已经加入缓存的与本机通信的计算机IP地址。包括IP地址mac地址和类型 例:c:>arp -a
-a ip 用于查看指定目的ip缓存中的项目。例:c:>arp -a 160.219.0.3
-d 用于清除所有网络接口的arp缓存。例:c:>arp -d
-d ip 用于清除指定目的IP的arp缓存。例:c:>arp -d 160.219.0.3
-s 增加一条静态arp项。例:c:>arp -s 157.55.85.212 00-aa-00-62-c6-09
以上仅为arp命令的常用参数更多参数可以输入apr /?查看
意思是每次A机使用ping命令ping一个IP, 这个IP和对应的mac就会加入到A机的ARP缓存表中。**
第3章 网际协议(Internet Protocol,IP)
第3章 网际协议.pptx
1.09MB
•理解IP的概念、作用以及在TCP/IP协议族中的位置。
网际协议( Internet Protocol, IP)作为TCP/IP协议族中的核心协议,提供了网络数据传送的最基本服务,同时也是实现网络互连的基本协议。特点:点对点(这里的点是主机、手机登终端的意思),不可靠,无连接。
无连接, 不会一直连接。
•掌握IP数据报格式的构成,了解IP数据报选项的作用。
IP数据报分片与重组
•熟悉IPv6的地址结构、数据报格式以及从IPv4过渡到IPv6的常用方法。
•理解移动IP的工作原理,熟悉与移动IP相关的重要概念。
第4章 网际控制报文协议(ICMP)
1、理解ICMP的概念和作用。
由上一章可知,网际协议IP是一种不可靠的,无连接的数据报传输协议,提供了一种尽力而为的点到点数据传输服务,但
不能保证所有数据报都可以成功地从信源到达信宿(不可靠)。为此人们在网络层(也称为IP层)引入了另外一种协议——网际控制报文协议( InternetControl Message Protocol, ICMP)ICMP是IP的补充,用于IP层的差错报告、拥塞控制、路径控制以及路由器或主机信息的获取。
2、掌握ICMP报文的格式和各种报文类型的作用。
ICMP报文分为两大类,即ICMP差错报告报文和ICMP查询报告报文。
3、了解ICMP报文的封装过程。
4、实例分析
5、Ping实用程序(实践)
ping 命令后,返回各参数的意义?
Ping程序用来测试两台主机之间在IP层(网络层)是否联通的工具。它使用ICMP回应请求和回应应答报告来测试信宿是否可达。基本语法 ping 目标IP地址 。
1、“ping一下某机器,看是不是开着”
我的理解:约等于查看某个ip的机子是不是在线(非关机且连入局域网状态),当然也有其他原因导致它ping不通:防火墙因素。另外有些服务器为了防止通过ping探测到,通过防火墙设置了禁止ping或者在内核参数中禁止ping,这样就不能通过ping确定该主机是否还处于开启状态。
防火墙技术
centos/RH 6.x 对应的防火墙技术:
service iptable status
centos/RH 7.x 对应的防火墙技术:
firewall-cmd --state
:
你知道我们二部的服务器用的是iptables还是farewell吗
:
我们服务器一般都没配防火墙吧
:
外网那台 我不知道
我:
我说我怎么按常规方法啥也查不到
2、不能打开网页时会说“你先ping网关地址192.168.1.1试试”。
常见路由器的网关默认 IP 都是 192.168.1.1。
3、不能ping通本机ip地址 127.0.0.1 说明了什么?
测试Windows主机IP软件安装是否正确,使用Ping 127.0.0.1。
4、ping广播地址
查看网段内在线的ip。
5、怎么ping外网?
ping www.baidu.com
所以使用用ping命令检测网络故障的典型次序为:
① ping 127.0.0.1:该命令被送到本地计算机而不会离开本机,如果没有收到应答包,就表示TCP/IP的安装或运行存在某些最基本的问题。
② ping 本机IP:该命令多用于手工配置IP地址的局域网用户,用户计算机始终都应该对该命令做出应答,如果没有收到应答,局域网用户应断开网络电缆,然后重新发送此命令,如果运行正确,则有可能是网络中有另一台计算机配置了相同的IP地址。若仍然有错,则表示本地配置或安装有问题。
③ ping 局域网内其它IP:该命令离开用户计算机,经过网卡和网络电缆到达其他计算机,再返回。收到应答表明本地网络的网卡和载体运行正确。若没有收到应答,则可能是子网掩码错误、网卡配置错误、或网络电缆不通。
同一个局域网内其它ip都可以被ping通吗?
④ ping 网关IP:若错误,表示网关地址错、或网关未启动,或到网关的线路不通。 常见路由器的网关默认 IP 都是192.168.1.1。
怎样查看自己的网关?
⑤ ping 远程IP:若收到应答,表示网关运行正常,可以成功访问Internet。
⑥ ping localhost:localhost是127.0.0.1的别名,是操作系统的网络保留名,系统应该能够将该名字转换成该地址。如果有问题,则表示主机文件(/Windows/host)中存在问题。
⑦ ping 域名:执行此命令时,计算机会先将域名转换为IP地址,一般是通过DNS服务器。如果有问题,则可能DNS服务器地址配置错误或DNS服务器故障。该功能还可用于查看域名对应的IP地址。
如果以上所有ping命令都能正常运行,通常说明用户计算机进行本地和远程通信的功能基本具备。
特别说明:ping不成功不意味着网络一定有问题,有些路由器和防火墙设置了过滤ping数据包的功能,因此当收不到返回包时,不一定说明网络有错。同样,ping命令的成功也不表示所有的网络配置都没有问题,例如,某些子网掩码错误就可能无法用这些方法检测到。
TCPIP网络编程技术.pdf 第五章 IP路由 导读
1、理解IP路由的概念和路由表作用
通过路由器将数据从一个网络传输到另一个网络称之为路由。
信息从信源向信宿(目的地)传输,信源和信宿分别在不同网络时,信息需要经过一些中间环节(间接传递)才能传递到信宿的过程,这些中间环节一般是由一系列路由器组成。路由器放置在网络与网络之间。
2、路由选择算法
距离向量路由算法考试例题(P101 、P102):
(b)度量值:A到信宿的距离
链路状态路由算法考试例题(P108):
3、路由选择协议
为了简化路由,因特网将整个互联网划分为若干相互独立部分的集合。这些独立部分的集合通过统一的路由策略或路由协议相互交换信息,形成一个相对独立的网络,称之为自治系统( Autonomous System, AS)= 路由选择域,自治系统内部路由选择又称为域内路由选择,而自治系统之间的路由选择又称为域间路由选择。
(1)内部网关协议IGP(Interior Gateway Protocol),即在一个自治系统内部使用的路由选择协议(域内路由选择协议)。有:
a、路由信息协议(Routing Information Protocol,RIP)是基于距离向量路由算法( Bellman-Ford算法)。
b、开放最短路径优先协议 (Open Shortest Path First, OSPF) 是基于链路状态路由选择算法( Dijkstra算法)( Shortest Path First,SPF)。
(2)外部网关协议EGP(External Gateway Protocol),即自治系统之间使用的路由选择协议(=域间路由选择协议)。
P148 边界网关协议( BGP)是域间路由选择协议,通过自治系统边界路由器在自治系统之间交换路由信息,同时确保无环路。
4、补充:网关
网关:局域网内 转发数据任务 的承担者。
对于普通用户而言, 通常局域网的网关(计算机的默认网关地址) = 路由器的IP = 路由器LAN接口的IP = 路由器的管理页面登陆地址
当你所在的局域网的计算机需要和其它局域网中的计算机,或者需要访问互联网的时候,你所在局域网的计算机会先把数据包传输到网关(路由器的LAN接口),然后再由网关进行转发。
这就是为什么我们在有路由器上网的时候,必须要把计算机中的默认网关地址设置成路由器LAN接口的地址的原因,因为路由器的LAN接口就是你所在网络的网关,你的电脑要上网,数据包必须要经过网关转发出去。目前家用路由器一般使用192.168.1.1和192.168.0.1作为LAN接口的地址,这两个地址也是最常见的网关地址。
下面总结的不够好 还需直接上网查
网关的英文名称:gateway,又叫做网间连接器、协议转换器。网关是在采用不同体系结构或协议的网络之间进行互通时,用于提供协议转换、路由选择、数据交换等网络兼容功能的设施。
网关在传输层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关既可以用于广域网互连,也可以用于局域网互连。 网关是一种充当转换重任的计算机系统或设备。在使用不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。与网桥只是简单地传达信息不同,网关对收到的信息要重新打包,以适应目的系统的需求。同时,网关也可以提供过滤和安全功能。大多数网关运行在OSI 7层协议的顶层--应用层。
【说明:由于历史的原因,许多有关TCP/IP的文献曾经把网络层使用的路由器称为网关,在今天很多局域网采用都是路由来接入网络,因此通常指的网关就是路由器的IP!】
5、route命令的使用
路由选择负责在网络中选择一段最优先的路径将数据传输到目的网络,路由选择的基础和依据是路由表,路由表由目的网络ID、子网掩码、网关、接口和计费组成,通过route print可查看计算机的路由表。
路由表规则怎么起作用的我忘了
IPv4 Route Table
===========================================================================
Interface List
0x1 ........................... MS TCP Loopback interface
0x10003 ...00 03 ff 25 88 8c ...... Intel 21140-Based PCI Fast Ethernet Adapter
(Generic)
===========================================================================
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 172.16.11.1 172.16.11.30 20
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
172.16.11.0 255.255.255.0 172.16.11.30 172.16.11.30 20
172.16.11.30 255.255.255.255 127.0.0.1 127.0.0.1 20
172.16.255.255 255.255.255.255 172.16.11.30 172.16.11.30 20
224.0.0.0 240.0.0.0 172.16.11.30 172.16.11.30 20
255.255.255.255 255.255.255.255 172.16.11.30 172.16.11.30 1
Default Gateway: 172.16.11.1
===========================================================================
Persistent Routes:
None
路由表中每一个路由表项(或路由)都由五个字段组成:
网络目标地址(Network Destination):代表某个可能的目的地址,它是一个IP地址或子网,即表示IP数据包被转发到何处的地址。好理解
掩码(Netmask):一个用于将某数据包中的IP地址中的目标地址字段与上面可能的网络地址匹配起来的位模式。好理解,和目标地址配合使用
网关(Gateway):下一跳的IP地址,数据包必须被转发到此,才能到达特定的目的网络。
接口(Interface):下一跳的接口,这个接口必须用于将数据包进行转发,以达到特定的目的网络。
跳数(metric):表示到达目的的过程中经过了多少跳数(路由器数),即路由的成本。
有了网关及目标地址还要接口做什么?
示例一:目标主机在本地子网上
假设这个服务器(172.16.11.30)要将数据包发往同一子网内的另一台主机(IP地址为172.16.11.80)。那么这个数据包的源地址为172.16.11.30,目标地址为172.16.11.80。下面我们将展示Windows是如何用其路由表来决定选择使用哪条路由的:
1、 Windows首先依次从路由表中取出每一个路由,并将数据包的目标地址(172.16.11.80)与选中路由的掩码执行逻辑“与”运算。下面展示结果,这里,路由表中的每一个路由是通过其网络目的地址确定的:
Route Netmask 172.16.11.80 AND Netmask
0.0.0.0 0.0.0.0 0.0.0.0
127.0.0.0 255.0.0.0 172.0.0.0
172.16.11.0 255.255.255.0 172.16.11.0
172.16.11.30 255.255.255.255 172.16.11.80
172.16.255.255 255.255.255.255 172.16.11.80
224.0.0.0 224.0.0.0 160.0.0.0
255.255.255.255 255.255.255.255 172.16.11.80
2、对每一个路由来说,这个“与”运算的结果要与路由的网络目标地址比较,二者的一次匹配意味着这条路由可用于将数据包转发到其目标地址。如果发现不只有一个匹配,Windows就会选用拥有最长匹配的路由(即1的位数最高的路由)。如果这并没有产生唯一的路由,Windows就任意地选用一个作为路由。从上面的列表中,这个“与”运算的结果导致了两个匹配(路由1和3),因此Windows选择了拥有最长匹配的路由,即第三行的那个。其结果是Windows知道了使用哪个路由将数据包传送到目的地。下面是这条路由在服务器的路由表中看起来的样子:
Network Destination Netmask Gateway Interface Metric
172.16.11.0 255.255.255.0 172.16.11.30 172.16.11.30 20
3、 Windows现在要使用下面的算法来决定下一步做什么:
a) 如果路由的网关字段与服务器上的一个网络接口的地址相匹配(或者如果网关是空的话),那么Windows就会用在路由中指定的接口将数据包直接发送到目标地址。
b) 如果路由的网关字段并不与服务器上网络接口的任意地址相匹配,Windows将会把数据包转发给路由中的网关字段的地址。
很明显,这里符合条件a,路由的网关字段(172.16.11.30)即为分配给服务器单个网卡的地址。Windows因此会作出决定认为目标地址位于本地子网上,这也就是说Windows不需要将数据包发送到任何路由器,而是直接发送给其目的地址。在此例中,Windows使用服务器的172.16.11.30的网络接口,简单地将数据包发送给172.16.11.80,接收主机得到了数据包。
示例二:目标主机在远程子网上
现在,让我们继续同样的过程,不过这次我们假定服务器想把数据包发往一个不同子网上的一台主机(IP地址为172.16.10.200)。换句话说,数据包的源地址为172.16.11.30,目标地址为172.16.10.200。下面我们看一下Windows是如何利用路由表决定选择哪条路由的: 网管网bitsCN_com
1、Windows从路由表中取出每一条路由,将数据包的目标地址(172.16.10.200)与路由中的掩码进行“与” 运算。运算结果如下:
Route Netmask 172.16.10.200 AND Netmask
0.0.0.0 0.0.0.0 0.0.0.0
127.0.0.0 255.0.0.0 172.0.0.0
172.16.11.0 255.255.255.0 172.16.10.0
172.16.11.30 255.255.255.255 172.16.10.200
172.16.255.255 255.255.255.255 172.16.10.200
224.0.0.0 224.0.0.0 160.0.0.0
255.255.255.255 255.255.255.255 172.16.10.200
2、对于每一条路由来说,“与”运算的结果要与路由中网络目标地址相比较,二者匹配意味着这条路由可被用于将数据包转发到其目标地址。从我们上面的第二张路由表,你可以看出这次只有一个匹配,也就是说是第一行,这个路由的网络目地字段(0.0.0.0)与“与”运算的结果匹配。因此Windows用来将数据包转发到其目标地址的路由即为下面的路由:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 172.16.11.1 172.16.11.30 20
3. 然后Windows就会使用前述的算法来决定下一步做什么,这次符合条件b,因为路由的网关字段(172.16.11.1)与分配给服务器的单独网卡的地址(172.16.11.30)并不匹配。Windows因此会决定目标地址位于一个远程子网上,将数据包转发给路由器,路由器通过继续转发数据包将其传送到目的地。在此例中,Windows使用服务器的172.16.11.30网络接口,将数据包发送到在网关字段中所显示的地址。一旦位于172.16.11.1的路由器收到了数据包,它会决定下一步需要采取什么步骤,才能将数据包转发到其最后的目标地址172.16.10.200,而这又依赖于172.16.11.10/24网络是172.16.11.11/24(由单个路由器连接)或一个远程网络的邻近子网(由几个中间网络之间的路由器连接)。
第6章 传输层协议(端到端通信) 必杀技面试的重点
滑动窗口的题目牛客网上没有答案,高分笔记里只有很简单的一部分流量控制的介绍,没有涉及到滑动窗口。
拥塞控制的题目都搞懂了。
理解端到端通信的概念。
端口
TCP=面向连接=单播,不能多播,广播=面向字节流 全双工(通信双方可同时进行发送和接收数据)
• 了解UDP报文传输服务的特点、报文形式和封
装形式。
• 了解TCP格式的主要字段及其含义和功能。
源端和目的端的端口号:每个TCP报文段都包括,用于标识发送端和接收端的应用进程。
序列号:用来标识从TCP发送端向接收端发送的数据字节流,它表示在这个报文段中的第一个数据字节序号。
确认号:指期望接收的下一个报文段的第一个字节的序列号,也就是期望接收对方的下一个报文段首部的序列号字段的值。同时,确认号也表明在确认号之前的所有数据接收方都已经收到。
首部长度字段:占4位,用来标识TCP报文段首部的长度共有多少个32位字块构成,因此首部的长度一定是32位的整数倍。
保留字段:目前未用,供将来使用。
控制字段:用于TCP的流量控制、连接的建立和终止以及表示数据的传送方式等。各位的具体含义如下:
紧急 URG:当该位为1时,表明紧急指针有效,否则无效。
确认 ACK:当该位为1时,表明确认序号有效,即该报文段是一个确认报文段,否则无效。
PSH(PuSH):其值为1时表示接收方应尽快将这个报文段交给应用层处理。
复位 RST(ReSet):重建连接标志。
同步 SYN:同步序号标志,其值为1时用来发起一个连接。
终止 FIN:其值为1时表示发送端完成发送任务。
窗口大小:用来配合TCP中的流量控制算法实现流量控制,该字段的值用来定义通信对方必须维持的以字节为单位的窗口值,以实现对对方发送数据量的控制。
校验和: 用来校验整个TCP报文段的所有数据的正确性,包括TCP首部和数据。为了校验TCP数据报是否正确地传递到了信宿机,在计算校验和时引入了伪首部的概念,其包括信源机IP地址和信宿机IP地址。
• 掌握TCP连接的建立与关闭过程,TCP连接(服务器/客户机模式)管理包括建立时的三次握手和关闭时的四次握手
滑动窗口机制的工作原理和拥塞控制机制。
TCP流量控制
一般说来,我们总是希望数据传输得更快一些。但如果发送方把数据发送得过快,接收方就可能来不及接收,这就会造成数据的丢失。流量控制(flow control)就是让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞。
缓存思想:
流量控制的缓存方案.vsdx
62.49KB
两种极端情况:发送方每发送一个字节都要等待接收方确认,通信效率低; 发送方不关心接收方是否确认,不断发送数据,从而可能造成接收方缓冲区溢出,丢失数据。通过流量控制来定义发送方在收到接收方的确认报文之前。
这个缓存是一个窗口的形式。
可以看出接收方B在发送指令告诉发送方A ,A能够传输什么范围内的数据,已达到控制的目的。
可以发送的数据量。
(1)滑动窗口是实现流量控制的关键技术。
TCP滑动窗口是如何工作的 ?
利用可变窗口大小进行流量控制。在TCP的会话过程中,允许动态协商窗口大小,从而更加有效地利用带宽。
AN
WIN
以下来自谢希仁课件。
强调三点:
A 的发送窗口并不总是和 B 的接收窗口一样大(因为有一定的时间滞后)。
TCP 标准没有规定对不按序到达的数据应如何处理。通常是先临时存放在接收窗口中,等到字节流中所缺少的字节收到后,再按序交付上层的应用进程。
TCP 要求接收方必须有累积确认的功能,这样可以减小传输开销。
滑动窗口的做用?(端到端的)流量控制。提高了整个网络的吞吐率,能够提高传输效率,能够提高信道利用率,允许接收端在拥有容纳足够数据的缓冲之前对传输进行限制。不能够防止报文段顺序出错,这是序列号来保证的。
链接:https://www.nowcoder.com/ques...
来源:牛客网
滑动窗口本质上是描述接受方的 TCP 数据报缓冲区大小的数据,发送方根据这个数据来计算自己最多能发送多长的数据。如果发送方收到接受方的窗口大小为 0 的 TCP 数据报,那么发送方将停止发送数据,等到接受方发送窗口大小不为 0 的数据报的到来。书中的 P211 和 P212 很好的解释了这一点。
关于滑动窗口协议,书上还介绍了三个术语,分别是:
- 窗口合拢:当窗口从左边向右边靠近的时候,这种现象发生在数据被发送和确认的时候。
- 窗口张开:当窗口的右边沿向右边移动的时候,这种现象发生在接受端处理了数据以后。
- 窗口收缩:当窗口的右边沿向左边移动的时候,这种现象不常发生。
TCP 就是用这个窗口,慢慢的从数据的左边移动到右边,把处于窗口范围内的数据发送出去(但不用发送所有,只是处于窗口内的数据可以发送。)。这就是窗口的意义。图 20-6 解释了这一点。窗口的大小是可以通过 socket 来制定的, 4096 并不是最理想的窗口大小,而 16384 则可以使吞吐量大大的增加。
以下有关TCP滑动窗口机制描述正确的是(A,D)
A、在TCP连接的两端分别有滑动窗口,控制接受和发送
B、仅在TCP连接的发送端有滑动窗口即可很好实现流量控制
C、仅在TCP连接的接收端有滑动窗口即可很好实现流量控制
D、TCP连接两端的滑动窗口大小可以自由调节,不必完全一致
牛客网搜索:滑动窗口
下面的主要概念:缓冲区、连续重发协议
停--等协议
选择重发协议
争用协议
滑动窗口协议中,发送窗口保存的是()
可发送的帧序号
可接收的帧序号
不可发送的帧序号
不可接收的帧序号
滑动窗口协议中发送窗口中的编号代表 1 .
数据链路层滑动窗口机制中发送窗口(已发送未确认)最大值主要依据( )。
发送缓冲区大小(大于发送窗口)
接受方缓冲区大小(最小为1)
链路传播时延
以上均是
TCP使用滑动窗口进行流量控制,流量控制实际上是对( )的控制。
发送方数据流量
接收方数据流量
发送、接收方数据流量
链路上任意两节点间的数据流量
Internet TCP 滑动窗口协议规定( )。
在发送方未被确认的报文数最多为发送窗口的大小 应该是对的吧
固定的窗口大小
发送窗口大小只和接收方的接收能力有关 跟双方应该都有关
发送方根据自己的发送能力确定窗口大小 跟双方应该都有关
( )是关于滑动窗口机制的错误描述。
发送窗口必须大于接受窗口 错误。发送窗口值不能超过接受窗口值。其他三项不是很清楚,但是A肯定是错的
选择重传(SR)在TCP协议中无法完全实现
后退N帧(GBN)的接收窗口为1
通过设定滑动窗口机制的发送、接收窗口可以实现停等协议
在数据链路层的滑动窗口协议中,当发送窗口允许发送帧的最大顺序号为15时,接收窗口的最大尺寸应为?
试根据发送滑动窗口变化过程,在下图所示各发送窗口下标出“发送帧序号”或“接收确认帧序号”说明。(参照第一窗口说明)
4155837_1493453297743_9F84DCB65651112566954012CDB27F72
4155837_1493453297743_9F84DCB65651112566954012CDB27F72
A 发送四号帧 B 接收确认 3 号帧 C 发送 5 号帧 D 接收确认 4 号帧 E 停止
假设你受雇设计一个使用滑动窗口的可靠的字节流协议( TCP )。这个协议将运行在 100Mbps 的网络上。网络的 RTT 是 100ms ,而且数据段的最大生存周期是 60 秒。
( 1 )应该在协议首部的接受窗口字段包含多少比特?
( 2 )协议首部的序号字段大约占多少比特?
在滑动窗口协议中,如果发送窗口大于1、接收窗口等于1时,就是()。
连续重发协议
停--等协议
选择重发协议
争用协议
滑动窗口的大小如何确定?
停止等待协议中
P347
对于有序接收的滑动窗口协议,若序号位数为3位,则发送窗口最大尺寸为( 7)
难道是 2^n - 1
对于无序接收的滑动窗口协议 , 若序号位数为 n, 则发送窗口最大尺寸为
2^n-1
2^n
2^(n-1)
2n-1
在连续ARQ协议中,当滑动窗口序号位数为n,则发送窗口最大尺寸为( A )。
2的n次方-1
2的n次方
2n-1
2n
下面的主要概念:缓冲区、连续重发协议
停--等协议
选择重发协议
争用协议
(2)对滑动窗口傻瓜综合症的进一步改进。
当发送应用进程产生数据很慢,或者接收应用进程接收处理数据很慢时,或者两种情况都存在时,在滑动窗口的操作中有可能出现发送方每次只发送包含一个字节(或较小字节数)的报文段,同时接收方每次也仅对接收到的包含一个字节(或较小字节数)的报文段进行确认。
这样势必大大降低网络带宽的使用效率,此时通常也称为出现了傻瓜窗口综合症。为此,在TCP中主要引入了3种策略予以改进。
Nagle算法
Clark算法
延迟确认算法
TCP拥塞控制
拥塞控制有哪几种方法?
(1)慢启动算法
(2)拥塞避免算法
(3) 重传定时器
纵坐标时拥塞窗口大小 cwnd,单位 MSS(最大报文段长度MSS=1K字节); 横坐标是RTT(Round-Trip Time): 往返时延,拥塞窗口大小cwnd随RTT变化。
【TCP拥塞控制的面试全攻略】
慢启动曲线是怎样的?
对于TCP Tahoe版本, 拥塞控制机制(指慢启动和拥塞避免算法)中,拥塞发生后,慢启动门限ssthresh被设置为当前拥塞窗口cwnd大小的一半(图中,T=13时发生拥塞,新的ssthresh=12,cwnd=1);当拥塞窗口小于阈值(ssthresh = 慢开始门限 = 慢启动阈值)时,是慢启动算法阶段,拥塞窗口呈指数增长,T=T0时,cwnd=1(都是从1开始的,没有从0开始的),cwnd = 2^(T - T0);到达阈值后,是拥塞避免算法阶段,呈线线增长(应该是加法增大,每个RTT,加1)直到网络拥塞发生(超时或收到重复确认)。
注意图中的快恢复曲线。新版本的内核中,TCP 使用的是 Reno版本 , 发生拥塞之后,有两种策略:1、IF 拥塞= 超时, 慢开始策略 ; IF 拥塞 = 重复确认 收到三个重复的ACK后, 快恢复+快重传策略。
客户端C和服务器S之间建立一个TCP连接,该连接总是以1KB的最大段长发送TCP段,客户端C有足够的数据要发送。当拥塞窗口为16KB的时候发生超时,如果接下来的4个RTT( = 往返时间)内的TCP段的传输是成功的,那么当第4个RTT时间内发送的所有TCP段都得到了ACK时,拥塞窗口大小是:
7KB
8KB
9KB
16KB
正确答案:C
16KB超时,阈值变为8KB,客户端从1KB开始穿(执行快开始算法)
1RTT 结束,1KB->2KB
2RTT 结束,2KB->4KB
3RTT 结束,4KB->8KB(到达阈值,执行拥塞避免算法)
4RTT 结束,8KB->9KB
结果C
• 掌握TCP中超时重发原理和差错控制机制。
TCP/IP Socket编程 基础理论 第7章套接字编程
第7章 套接字编程(终版).ppt
3.82MB
第七章 套接字socket编程基础 PPT导读
1、客户机(客户端)/服务器(服务器端)模型
客户机/服务器的工作流程
服务器端程序的特点
客户机端程序的特点
2、套接字概念。在TCP/IP中提供了3种不同套接字类型:流套接字(SOCK_STREAM)(面向连接=可靠的=TCP、适合传输大量数据、只能单播)、数据报套接字(SOCK_DGRAM)(无连接=不可靠=UDP)、原始套接字(SOCK_RAW)(可以读写内核没有处理的IP数据包)。
3、套接字编程基础部分。
客户机/服务器程序的工作模型分为面向连接和无连接两种。
常用的7个套接字API模型。
套接字编程的相关数据结构。
网络字节顺序:
不同体系的CPU在内存中的数据存储往往存在差异。如Intel的x86系列处理器将低序字节存储在起始地址,而一些RISC架构的处理器,如IBM的370主机使用的PowerPC或Motorola公司生产的CPU,都将高序字节存储在起始位置。这两种不同的存储方式被称为低位优先(little-endian)和高位优先(big-endian)。
对于网络上的字节表示法有一个标准——网络字节顺序,它与高位优先相同。以便于不同体系结构的计算机间的通信。
4、 以winsock API(Microsoft Windows操作系统类中使用)(C++)为例介绍socket编程
常用API。
基于TCP的程序设计方法:流程图、客户机程序、服务器程序。
基于UDP的程序设计方法:流程图、客户机程序、服务器程序。
Java TCP/IP Socket编程
为了方便各位网友学习以及方便自己复习之用,将Java TCP/IP Socket编程系列内容按照由浅入深的学习顺序总结如下,点击相应的标题即可跳转到对应的文章:
Java套接字编程简单示例
【Java TCP/IP Socket】Java TCP Socket程编程 (简单的线程)
【Java TCP/IP Socket】Java UDP Socket编程 (简单的线程)
【Java TCP/IP Socket】应用程序协议中消息的成帧与解析
【Java TCP/IP Socket】构建和解析自定义协议消息
【Java TCP/IP Socket】基于线程池的TCP服务器
【Java TCP/IP Socket】TCP Socket通信中由read返回值造成的的死锁问题
【Java TCP/IP Socket】Java NIO Socket VS 标准IO Socket
【Java TCP/IP Socket】基于NIO的TCP通信
【Java TCP/IP Socket】深入剖析socket——数据传输的底层实现
【Java TCP/IP Socket】深入剖析socket——TCP通信中由于底层队列填满而造成的死锁问题
【Java TCP/IP Socket】深入剖析socket——TCP套接字的生命周期
【Java TCP/IP Socket】Socket网络编程知识点总结
应用:(视频)聊天室、 邮件发送程序(代码:https://wenku.baidu.com/view/...)
第9章 IP多播和网际组管理协议 导读
1、理解IP多播的基本原理。
2、掌握网际组管理协议IGMP。用于多播路由器和主机之间进行群组关系的管理,其运行于主机和与主机直接相连的多播路由器之间。
主机通过此协议告诉本地路由器希望加入某个特定多播组,同时路由器通过此协议周期性地查询局域网内某个已知组的成员是否处于活动状态(即该局域网是否仍有属于某个多播组的成员),进行所连网络组成员关系的收集与维护。
[#]3、了解常见的多播路由选择算法(基于前面的路由选择算法)。网上并没有多播路由选择算法习题。
4、基于多播的应用程序编程:掌握基于WinSock 2的多播应用程序设计方法。
补充:Java广播和多播简单示例程序 http://www.cnblogs.com/xujian...
第10章 应用层常用协议与编程
• 熟悉MAPI编程接口,掌握基于SMAPI的邮件应用程序设计方法。
设计 开 发 了 一个 简 单 的邮 件 收 发程 序 , 其中 在CMyEMail类中实现对SMAPI接口函数的功能封装,实现了初始化、 登录邮件系统、 发送邮件、 接收邮件和注销登录等操作。 并在该类的基础上实现一个简单的邮件收发程序。 ( 详细设计参见代码)
Java.mail.* 接收和发送邮件代码 https://wenku.baidu.com/view/... 15页(字体大),一个发送类,一个接收类。排版混乱
登录邮件系统、 发送邮件、 接收邮件和注销登录 项目设计书 visual c++ http://dwz.cn/68wzcC 项目书40页 代码十几页(字体中)
上面这个题目我找到的代码都特别长,你(们)那里有什么比较好的答案吗?