计算机网络
文章平均质量分 70
鸭梨山大哎
life hard take it easy
展开
-
路由选择及分组转发
网络层的分组转发设备是路由器。路由器是一个具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。从路由器某个输入端口收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器。下一跳路由器也按照这种方法处理分组,直到该分组到达终点为止。路由器实现了路由选择和分组转发的功能。典型路由器的结构如图所示。从图中可以看出,整个路由器结构可划分为两个部分:路由选择和分组转发。当分组到达路由器时,先由物理层、数据链路层、网络层三个模块对分组进行处理:物理原创 2021-07-18 08:39:50 · 5854 阅读 · 1 评论 -
私有IP地址入门
IP地址中的一类比较特殊,被称为私有IP地址。在现在的网络中,IP地址分为公网IP和私有IP地址。公网IP是在Internet使用的IP地址,而私有IP地址是在局域网中使用的IP地址。根据RFC1918,私有IP地址包括如下三个大小不同的地址空间,可供不同规模的企业网或专用网使用。①10.0.0.0~10.255.255.255。1个A类网络地址,共约1677万个IP地址。②172.16.0.0~172.31.255.255。16个B类网络地址,共约104万个IP地址。③192.168.0.0~19原创 2021-07-18 08:40:35 · 3741 阅读 · 0 评论 -
子网地址与子网掩码
在IPv4网络中,主要使用了A类、B类和C类IP地址。经过网络位和主机位的层次划分,三类IP地址能够适应于不同的网络规模。例如,使用A类IP地址的网络可以容纳1600多万台主机,而使用C类IP地址的网络仅仅可以容纳254台主机。但是,由于三类地址划分的固定性,在某些情况下,使用三类地址中的任何一种都存在很大的浪费现象。例如,随着计算机的发展和网络技术的不断进步,个人计算机应用迅速普及,小型网络(特别是小型局域网络)越来越多。这些网络多则拥有几十台主机,少则拥有两三台主机。对于这样一些小规模网络即使原创 2021-07-17 17:30:51 · 11140 阅读 · 0 评论 -
IP地址的分类
一个IP地址用32位二进制位来表示,可以被分为4个字节,每个字节用十进制来表示,则可以写成点分十进制记法。一个IP地址由两部分组成:网络位和主机位。网络位靠左,主机位靠右,两者相互连续,互不交叉。网络位又称网络部分或网络标识;主机位又称主机部分或主机标识。两级IP地址结构如图4-6所示。Internet最初定义地址类别是为了系统地给不同大小的网络分配地址前缀地址类别定义了用于网络位和主机位的位数,确定了网络的数量和每个网络中的主机数量。IPv4地址共分为五类,在五个地址类别中,A类、B类和C类地址是为原创 2021-07-17 15:41:48 · 433 阅读 · 0 评论 -
分层模型中数据传输过程
考虑图中主机1和主机2之间的数据传输过程。从直观上来看,主机1发送数据给主机2,中间先经过了路由器1和路由器2,最后到达主机2。事实上,整个数据的传送要经过封装和拆封两个过程。在发送方(也称为源)主机1,当应用程序使用TCP或UDP传送用户数据时,将用户数据送入TCP/IP协议栈,然后自上而下地逐个通过每一层,直到被当作一串比特流送入网络。每一层对收到的数据都需要增加一些首部信息,在数据链路层还需要增加尾部信息。这些操作过程称为封装。在接收方(也称为目的)主机2,当应用程序使用TCP或UDP传送用户数原创 2021-07-17 15:33:54 · 1021 阅读 · 1 评论 -
网络端口入门
什么是端口是一个协议下的一种约定A network port which is provided by the Transport Layer protocols ofInternet Protocol suite, such as Transmission Control Protocol (TCP)and User Diagram Protocol (UDP) is a number which serving endpointcommunication between two comput原创 2021-07-17 14:58:31 · 168 阅读 · 1 评论 -
什么是mac地址?
什么是mac地址?MAC地址(英语:Media Access Control Address),直译为媒体存取控制位址,也称为局域网地址(LAN Address),MAC位址,以太网地址(Ethernet Address)或物理地址(Physical Address),它是一个用来确认网络设备位置的位址。在OSI模型中,第三层网络层负责IP地址,第二层数据链路层则负责MAC位址 。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址 。ma原创 2021-07-17 14:36:07 · 7689 阅读 · 0 评论 -
TCP协议入门
TCP位于TCP/IP模型的传输层,它是一种面向连接的端到端协议。TCP作为传输控制协议,可以为主机提供可靠的数据传输。1.TCP的主要特点TCP是TCP/IP体系中非常复杂的一个协议,下面介绍TCP最主要的几个特点。(1)支持面向连接的传输服务应用程序在使用TCP提供的服务传送数据之前,必须先建立TCP连接。类似于日常生活中的电话通信,在进行通话之前需要先建立连接,双方知道电话已接通,开始语音对话,电话结束之后还要挂机释放连接。TCP提供服务之前建立连接的目的是通信双方为接下来的数据传送做好准备,原创 2021-07-17 12:59:44 · 716 阅读 · 1 评论 -
协议栈Protocol stack入门
什么是协议栈?就是一堆协议,比如TCP/IP 协议,有时候也指实现协议的具体软件A set of network protocol layers that work together. The OSI ReferenceModel that defines seven protocol layers is often called a stack, asis the set of TCP/IP protocols that define communication over theinterne原创 2021-07-17 10:01:18 · 545 阅读 · 1 评论 -
Web服务器程序解释请求消息并作出响应
图6.7展示了服务器程序的工作过程,这个过程不仅限于Web服务器,对于各种服务器程序都是共通的,收发数据的过程也是大同小异的。各种服务器程序的不同点在于图中(b)客户端通信部分的第一行调用read后面的如下部分。[处理请求消息内容];图6.7中只写了一行,但实际上这里应该是一组处理各种工作的程序,或者说这里才是服务器程序的核心部分。接下来让我们来对这一部分进行探索。Web服务器中,图6.7的read获取的数据内容就是HTTP请求消息服务器程序会根据收到的请求消息中的内容进行相应的处理,并生成响应消原创 2021-07-17 09:47:50 · 1147 阅读 · 1 评论 -
浏览器接收响应消息并显示内容
通过响应的数据类型判断其中的内容Web服务器发送的响应消息会被分成多个包发送给客户端,然后客户端需要接收数据。首先,网卡将信号还原成数字信息,协议栈将拆分的网络包组装起来并取出响应消息,然后将消息转交给浏览器。这个过程和服务器的接收操作相同。接下来,我们来看一看浏览器是如何显示内容的。要显示内容,首先需要判断响应消息中的数据属于哪种类型。Web可以处理的数据包括文字、图像、声音、视频等多种类型,每种数据的显示方法都不同,因此必须先要知道返回了什么类型的数据,否则无法正确显示。这时,我们需要一些信息才能原创 2021-07-17 09:29:03 · 1203 阅读 · 1 评论 -
TCP模块的断开操作
当数据收发完成后,便开始执行断开操作。在TCP协议的规则中,断开操作可以由客户端或服务器任何一方发起,具体的顺序是由应用层协议决定的。Web中,这一顺序随HTTP协议版本不同而不同,在HTTP1.0中,是服务器先发起断开操作。这时,服务器程序会调用Socket库的close, TCP模块会生成一个控制位FIN为1的TCP头部,并委托IP模块发送给客户端。当客户端收到这个包之后,会返回一个ACK号。接下来客户端调用close,生成一个FIN为1的TCP头部发给服务器,服务器再返回ACK号,这时断开操原创 2021-07-17 09:17:57 · 207 阅读 · 0 评论 -
TCP模块如何处理数据包
首先,TCP模块会检查收到的包对应哪一个套接字。在服务器端,可能有多个已连接的套接字对应同一个端口号,因此仅根据接收方端口号无法找到特定的套接字。这时我们需要根据IP头部中的发送方IP地址和接收方IP地址,以及TCP头部中的接收方端口号和发送方端口号共4种信息,找到上述4种信息全部匹配的套接字。找到4种信息全部匹配的套接字之后,TCP模块会对比该套接字中保存的数据收发状态和收到的包的TCP头部中的信息是否匹配,以确定数据收发操作是否正常。具体来说,就是根据套接字中保存的上一个序号和数据长度计算下一个序号,原创 2021-07-16 08:33:45 · 795 阅读 · 0 评论 -
什么是套接字?
套接字通常指的是封装了ip和port的结构体。主要对进程间通信或者网络通信的抽象。比如我们建立一个tcp连接,本质上就是两端都有一个套接字,记录了源ip,端口和目的ip,端口。真正套接字的实现其实还比较复杂,可以看man手册搜socket了解一下。或者看内核socket结构体的相关内容。socket 其实就是操作系统提供给程序员操作「网络协议栈」的接口,说人话就是,你能通过socket 的接口,来控制协议找工作,从而实现网络通信,达到跨主机通信。总结就是封装了ip和port的一个结构体参考大佬们原创 2021-07-16 08:33:19 · 1718 阅读 · 0 评论 -
TCP模块如何处理连接包
当TCP头部中的控制位SYN为1时,表示这是一个发起连接的包(图6.7①)。这时,TCP模块会执行接受连接的操作,不过在此之前,需要先检查包的接收方端口号,并确认在该端口上有没有与接收方端口号相同且正在处于等待连接状态的套接字。如果指定端口号没有等待连接的套接字,则向客户端返回错误通知的包如果存在等待连接的套接字,则为这个套接字复制一个新的副本,并将发送方IP地址、端口号、序号初始值、窗口大小等必要的参数写入这个套接字中,同时分配用于发送缓冲区和接收缓冲区的内存空间。然后生成代表接收确认的ACK号,用于原创 2021-07-16 08:26:32 · 457 阅读 · 0 评论 -
IP模块的接收操作
当网络包转交到协议栈时,IP模块会首先开始工作,检查IP头部,IP模块首先会检查IP头部的格式是否符合规范,然后检查接收方IP地址,看包是不是发给自己的。当服务器启用类似路由器的包转发功能时,对于不是发给自己的包,会像路由器一样根据路由表对包进行转发。**确认包是发给自己的之后,接下来需要检查包有没有被分片。**检查IP头部的内容就可以知道是否分片,如果是分片的包,则将包暂时存放在内存中,等所有分片全部到达之后将分片组装起来还原成原始包;如果没有分片,则直接保留接收时的样子,不需要进行重组。到这里,我们就原创 2021-07-16 08:19:15 · 165 阅读 · 0 评论 -
网卡将接收到的信号转换成数字信息
现在,客户端发送的网络包已经到达了服务器。到达服务器的网络包其本质是电信号或者光信号,接收信号的过程和客户端是一样的。接收操作的第一步是网卡接收到信号,然后将其还原成数字信息。局域网中传输的网络包信号是由1和0组成的数字信息与用来同步的时钟信号叠加而成的,因此只要从中分离出时钟信号,然后根据时钟信号进行同步,就可以读取并还原出1和0的数字信息了。信号的格式随传输速率的不同而不同,因此某些操作过程可能存在细微差异,例如10BASE-T的工作方式如图6.5所示。首先从报头部分提取出时钟信号(图6.5①),原创 2021-07-16 08:16:22 · 1880 阅读 · 2 评论 -
服务器概览
客户端与服务器的区别**首先,服务器和客户端有什么区别呢?**根据用途,服务器可以分为很多种类,其硬件和操作系统与客户端是有所不同的。但是,网络相关的部分,如网卡、协议栈、Socket库等功能和客户端却并无二致。无论硬件和OS如何变化,TCP和IP的功能都是一样的,或者说这些功能规格都是统一的。不过,它们的功能相同,不代表用法也相同。在连接过程中,客户端发起连接操作,而服务器则是等待连接操作,因此在Socket库的用法上还是有一些区别的,即应用程序调用的Socket库的程序组件不同。此外,服务器的程序原创 2021-07-16 08:09:59 · 146 阅读 · 1 评论 -
防火墙的结构和原理
主流的包过滤方式无论服务器部署在哪里,现在一般都会在前面部署一个防火墙,如果包无法通过防火墙,就无法到达服务器。因此,让我们先来探索一下包是如何通过防火墙的。防火墙的基本思路即只允许发往特定服务器中的特定应用程序的包通过,然后屏蔽其他的包。不过,特定服务器上的特定应用程序这个规则看起来不复杂,但网络中流动着很多各种各样的包,如何才能从这些包中分辨出哪些可以通过,哪些不能通过呢?为此,人们设计了多种方式,其中任何一种方式都可以实现防火墙的目的,但出于性能、价格、易用性等因素,现在最为普及的是包过滤方式。因原创 2021-07-16 07:55:45 · 1367 阅读 · 0 评论 -
Web服务器的部署地点
在公司里部署Web服务器网络包从互联网到达服务器的过程,根据服务器部署地点的不同而不同。最简单的是图5.1(a)中的这种情况,服务器直接部署在公司网络上,并且可以从互联网直接访问。这种情况下,网络包通过最近的POP中的路由器、接入网以及服务器端路由器之后,就直接到达了服务器。其中,路由器的包转发操作,以及接入网和局域网中包的传输过程都和我们之前讲过的内容没有区别。以前这样的服务器部署方式很常见,但现在已经不是主流方式了。这里有几个原因。第一个原因是IP地址不足。这样的方式需要为公司网络中的所有设备原创 2021-07-16 07:55:12 · 2718 阅读 · 2 评论 -
从互联网访问公司内网
对于从公司内网访问互联网的包,即便其发送方私有地址和端口号没有保存在对应表中也是可以正常转发的,因为用来改写的公有地址就是地址转换设备自身的地址,而端口号只要随便选一个空闲的端口就可以了,这些都可以由地址转换设备自行判断。然而,对于从互联网访问公司内网的包,如果在对应表中没有记录就无法正常转发。因为如果对应表中没有记录,就意味着地址转换设备无法判断公有地址与私有地址之间的对应关系。换个角度来看,这意味着对于没有在访问互联网的内网设备,是无法从互联网向其发送网络包的。而且即便是正在访问的设备,也只能向和互原创 2021-07-15 21:09:29 · 1731 阅读 · 0 评论 -
地址转换的基本原理
地址转换的基本原理是在转发网络包时对IP头部中的IP地址和端口号[插图]进行改写。具体的过程我们来看一个实际的例子,假设现在要访问Web服务器,看看包是如何传输的。首先,TCP连接操作的第一个包被转发到互联网时,会像图3.18这样,将发送方IP地址从私有地址改写成公有地址。这里使用的公有地址是地址转换设备的互联网接入端口的地址。与此同时,端口号也需要进行改写,地址转换设备会随机选择一个空闲的端口。然后,改写前的私有地址和端口号,以及改写后的公有地址和端口号,会作为一组相对应的记录保存在地址转换设备内部的一原创 2021-07-15 21:04:38 · 2686 阅读 · 0 评论 -
路由器的地址转换功能
首先,我们先了解一下地址转换功能出现的背景。所谓地址,就是用来识别每一台设备的标志,因此每台设备都应该有一个唯一不重复的地址,就好像如果很多人的地址都一样,那么快递员就不知道该把包裹送给谁了。网络也是一样,本来互联网中所有的设备都应该有自己的固定地址,而且最早也确实是这样做的。比如,公司内网需要接入互联网的时候,应该向地址管理机构申请IP地址,并将它们分配给公司里的每台设备。换句话说,那个时候没有内网和外网的区别,所有客户端都是直接连接到互联网的。尽管互联网原本是这样设计的,但进入20世纪90年代之后,互原创 2021-07-15 21:00:54 · 3147 阅读 · 1 评论 -
路由器与交换机的关系
要理解两者之间的关系,关键点在于计算机在发送网络包时,或者是路由器在转发网络包时,都需要在前面加上MAC头部。之前的讲解都是说在开头加上MAC头部,如果看图3.16大家可以发现,准确的说法应该是将IP包装进以太网包的数据部分中。也就是说,给包加上MAC头部并发送,从本质上说是将IP包装进以太网包的数据部分中,委托以太网去传输这些数据。IP协议本身没有传输包的功能,因此包的实际传输要委托以太网来进行。路由器是基于IP设计的,而交换机是基于以太网设计的,因此IP与以太网的关系也就是路由器与交换机的关系。换句话原创 2021-07-15 08:31:36 · 2702 阅读 · 1 评论 -
查询路由表确定输出端口
路由器完成包接收操作之后,路由器就会丢弃包开头的MAC头部。MAC头部的作用就是将包送达路由器,其中的接收方MAC地址就是路由器端口的MAC地址。因此,当包到达路由器之后,MAC头部的任务就完成了,于是MAC头部就会被丢弃。通过路由器转发的网络包,其接收方MAC地址为路由器端口的MAC地址接下来,路由器会根据MAC头部后方的IP头部中的内容进行包的转发操作。转发操作分为几个阶段,首先是查询路由表判断转发目标。关于具体的工作过程,我们还是来看一个实际的例子,如图3.13的情况,假设地址为10.1原创 2021-07-15 08:27:45 · 1525 阅读 · 2 评论 -
路由器的包接收操作
首先,路由器会接收网络包。路由器的端口有各种不同的类型,这里我们只介绍以太网端口是如何接收包的。以太网端口的结构和计算机的网卡基本相同,接收包并存放到缓冲区中的过程也和网卡几乎没有区别。1 首先,信号到达网线接口部分2 其中的PHY(MAU)模块和MAC模块将信号转换为数字信息3 通过包末尾的FCS进行错误校验,4 如果没问题则检查MAC头部中的接收方MAC地址,看看是不是发给自己的包- 如果是就放到接收缓冲区中,否则就丢弃这个包。- 如果包的接收方MAC地址不是自己,说明这个包是发给其他设原创 2021-07-15 08:22:10 · 993 阅读 · 0 评论 -
路由表中的信息
在“查表判断转发目标”这一点上,路由器和交换机的大体思路是类似的,不过具体的工作过程有所不同。交换机是通过MAC头部中的接收方MAC地址来判断转发目标的,而路由器则是根据IP头部中的IP地址来判断的。由于使用的地址不同,记录转发目标的表的内容也会不同。路由器中的表叫作路由表,其中包含的信息如图3.13所示。路由器根据“IP地址”判断转发目标。最左侧的目标地址列记录的是接收方的信息。这里的IP地址只包含表示子网的网络号部分的比特值,而表示主机号部分的比特值全部为0。路由器会将接收到的网络包的接收方IP地原创 2021-07-15 08:11:58 · 6956 阅读 · 1 评论 -
路由器的基本知识
网络包经过集线器和交换机之后,现在到达了路由器,并在此被转发到下一个路由器。这一步转发的工作原理和交换机类似,也是通过查表判断包转发的目标。不过在具体的操作过程上,路由器和交换机是有区别的。因为路由器是基于IP设计的,而交换机是基于以太网设计的。IP和以太网的区别在很多地方都会碰到,我们稍后再具体讲,现在先来看看路由器的概况。首先,路由器的内部结构如图3.12所示。这张图已经画得非常简略了,大家只要看明白路由器包括转发模块和端口模块两部分就可以了。转发模块负责判断包的转发目的地,端口模块负责包的收发操原创 2021-07-15 08:06:48 · 1026 阅读 · 1 评论 -
MAC地址表的维护
交换机在转发包的过程中,还需要对MAC地址表的内容进行维护,维护操作分为两种。第一种是收到包时,将发送方MAC地址以及其输入端口的号码写入MAC地址表中。由于收到包的那个端口就连接着发送这个包的设备,所以只要将这个包的发送方MAC地址写入地址表,以后当收到发往这个地址的包时,交换机就可以将它转发到正确的端口了。交换机每次收到包时都会执行这个操作,因此只要某个设备发送过网络包,它的MAC地址就会被记录到地址表中。另一种是删除地址表中某条记录的操作,这是为了防止设备移动时产生问题。比如,我们在开会时会把笔记原创 2021-07-15 07:59:21 · 3115 阅读 · 0 评论 -
包是如何通过交换机的
包是如何通过交换机的交换机的设计是将网络包原样转发到目的地,图3.7就是它的内部结构,我们边看图边讲。首先,信号到达网线接口,并由PHY(MAU)模块进行接收,这一部分和集线器是相同的。也就是说,它的接口和PHY(MAU)模块也是以MDI-X模式进行连接的,当信号从双绞线传入时,就会进入PHY(MAU)模块的接收部分.接下来,PHY(MAU)模块会将网线中的信号转换为通用格式,然后传递给MAC模块。MAC模块将信号转换为数字信息,然后通过包末尾的FCS校验错误,如果没有问题则存放到缓冲区中。这部分操作原创 2021-07-15 07:56:20 · 294 阅读 · 0 评论 -
集线器将信号发往所有线路
当信号到达集线器后,会被广播到整个网络中。以太网的基本架构就是将包发到所有的设备,然后由设备根据接收方MAC地址来判断应该接收哪些包,而集线器就是这一架构的忠实体现,它就是负责按照以太网的基本架构将信号广播出去。下面来看看它的工作方式。集线器的内部结构如图3.2左侧部分所示。首先,在每个接口的后面装有和网卡中的PHY(MAU)功能相同的模块,但如果它们像网卡端一样采用直连式接线,是无法正常接收信号的。要正常接收信号,必须将“发送线路”和“接收线路”连接起来才行。在图3.2中,集线器中的PHY (MAU)模原创 2021-07-14 21:44:32 · 1649 阅读 · 1 评论 -
防止网线中的信号衰减很重要
网卡中的PHY(MAU)模块负责将包转换成电信号,信号通过RJ-45接口进入双绞线,这部分的放大图如图3.2的右侧部分所示。以太网信号的本质是正负变化的电压,大家可以认为网卡的PHY(MAU)模块就是一个从正负两个信号端子输出信号的电路。网卡的PHY(MAU)模块直接连接图3.2右侧中的RJ-45接口,信号从这个接口中的1号和2号针脚流入网线。然后,信号会通过网线到达集线器的接口,这个过程就是单纯地传输电信号而已。在发送方一端还十分清晰的矩形信号波形,在传输过程不断衰减,波形也会失真,导致接收方难以原创 2021-07-14 21:38:42 · 2507 阅读 · 0 评论 -
UDP协议的收发操作
大多数的应用程序都像之前介绍的一样使用TCP协议来收发数据,但当然也有例外。有些应用程序不使用TCP协议,而是使用UDP协议来收发数据。向DNS服务器查询IP地址的时候我们用的也是UDP协议。下面就简单介绍一下UDP协议其实TCP中就包含了UDP的一些要点。TCP的工作方式十分复杂,如果我们能够理解TCP为什么要设计得如此复杂,也就能够理解UDP了。那么,为什么要设计得如此复杂呢?因为我们需要将数据高效且可靠地发送给对方。为了实现可靠性,我们就需要确认对方是否收到了我们发送的数据,如果没有还需要再发一遍。原创 2021-07-14 21:34:05 · 1657 阅读 · 0 评论 -
网卡是如何将包转换成电信号并发送到网线中的
下面来看一看网卡是如何将包转换成电信号并发送到网线中的。网卡驱动从IP模块获取包之后,会将其复制到网卡内的缓冲区中,然后向MAC模块发送发送包的命令。接下来就轮到MAC模块进行工作了。首先,MAC模块会将包从缓冲区中取出,并在开头加上报头和起始帧分界符,在末尾加上用于检测错误的帧校验序列(图2.24)图中显示了协议栈和网卡对包的处理过程。MAC头部很容易被误解为是由网卡来处理的,实际上它是由TCP/IP软件来负责的。报头是一串像10101010…这样1和0交替出现的比特序列,长度为56比特,它的作用原创 2021-07-14 21:27:48 · 1509 阅读 · 1 评论 -
将IP包转换成电或光信号发送出去
下面来看看以太网的包收发操作。IP生成的网络包只是存放在内存中的一串数字信息,没有办法直接发送给对方。因此,我们需要将数字信息转换为电或光信号,才能在网线上传输,也就是说,这才是真正的数据发送过程。负责执行这一操作的是网卡,但网卡也无法单独工作,要控制网卡还需要网卡驱动程序。驱动程序不只有网卡才有,键盘、鼠标、显卡、声卡等各种硬件设备都有。当然,不同厂商和型号的网卡在结构上有所不同,因此网卡驱动程序也是厂商开发的专用程序网卡的内部结构如图2.23所示,这是一张网卡主要构成要素的概念图,并不代表硬件的实际原创 2021-07-14 21:21:54 · 332 阅读 · 1 评论 -
以太网的基本知识
以太网是一种为多台计算机能够彼此自由和廉价地相互通信而设计的通信技术,它的原型如图2.22(a)所示。从图上不难看出,这种网络的本质其实就是一根网线。图上还有一种叫作收发器的小设备,它的功能只是将不同网线之间的信号连接起来而已。因此,当一台计算机发送信号时,信号就会通过网线流过整个网络,最终到达所有的设备。这就好像所有人待在一个大房间里,任何一个人说话,所有人都能够听到,同样地,这种网络中任何一台设备发送的信号所有设备都能接收到。不过,我们无法判断一个信号到底是发给谁的,因此需要在信号的开头加上接收者的信息原创 2021-07-14 21:16:49 · 962 阅读 · 1 评论 -
通过ARP查询目标路由器的MAC地址
什么是ARP?ARP(Address Resolution Protocol)即地址解析协议, 用于实现从 IP 地址到 MAC 地址的映射,即询问目标IP对应的MAC地址。ARP如何实现转换?这里我们需要使用ARP,它其实非常简单。在以太网中,有一种叫作广播的方法,可以把包发给连接在同一以太网中的所有设备。ARP就是利用广播对所有设备提问:“××这个IP地址是谁的?请把你的MAC地址告诉我。”然后就会有人回答:“这个IP地址是我的,我的MAC地址是××××。”(图2.19)如果对方和自己处于同一原创 2021-07-14 21:06:29 · 6999 阅读 · 0 评论 -
IP与以太网的包收发操作
包的基本知识TCP模块在执行连接、收发、断开等各阶段操作时,都需要委托IP模块将数据封装成包发送给通信对象。我们在TCP的讲解中也经常提到IP,下面就来讨论一下IP模块是如何将包发送给对方的。正式开始这个话题之前,我们先来介绍一下关于网络包的一些基本知识。首先,包是由头部和数据两部分构成的(图2.14(a))。头部包含目的地址等控制信息,大家可以把它理解为快递包裹的面单;头部后面就是委托方要发送给对方的数据,也就相当于快递包裹里的货物。一个包发往目的地的过程如图2.15所示。首先,发送方的网络设备会负原创 2021-07-14 08:30:44 · 959 阅读 · 0 评论 -
从服务器断开并删除套接字
既然我们已经讲解到了这里,那么索性把数据收发完成后协议栈要执行的操作也讲一讲吧。这样一来,从创建套接字到连接、收发数据、断开连接、删除套接字这一系列关于收发数据的操作就全部讲完了。毫无疑问,收发数据结束的时间点应该是应用程序判断所有数据都已经发送完毕的时候。这时,数据发送完毕的一方会发起断开过程,但不同的应用程序会选择不同的断开时机。以Web为例,浏览器向Web服务器发送请求消息,Web服务器再返回响应消息,这时收发数据的过程就全部结束了,服务器一方会发起断开过程。当然,可能也有一些程序是客户端发送完数据原创 2021-07-14 08:20:10 · 276 阅读 · 0 评论 -
收发数据入门
将HTTP请求消息交给协议栈当控制流程从connect回到应用程序之后,接下来就进入数据收发阶段了。数据收发操作是从应用程序调用write将要发送的数据交给协议栈开始的(图2.3③),协议栈收到数据后执行发送操作,这一操作包含如下要点。首先,协议栈并不关心应用程序传来的数据是什么内容。应用程序在调用write时会指定发送数据的长度,在协议栈看来,要发送的数据就是一定长度的二进制字节序列而已。其次,协议栈并不是一收到数据就马上发送出去,而是会将数据存放在内部的发送缓冲区中,并等待应用程序的下一段数据。这原创 2021-07-14 08:15:25 · 319 阅读 · 0 评论