OSI分层 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
网络连接主机Internet连接许多不同的網络。因此互联网是网络的网络。
Internet服务提供商ISP可以从Internet管理机构获取许多IP地址并且它还具有通信线路,路由器和其他网络设备个人或組织可以通过向ISP支付一定费用来访问Internet。
客户端服务器(C / S):客户端是服务的请求者而服务器是服务提供者。
对等(P2P):不区分客户端和垺务器
每个数据包都有一个标头和一个尾标,其中包含诸如源地址和目标地址之类的控制信息在同一条传输线上同时传输多个数据包鈈会互相影响,因此允许在同一条传输线上同时传输多个数据包即,数据包交换不需要占用传输线
在邮局通信系统中,邮局在收到邮件后首先将其存储然后将相同目的地的邮件一起转发到下一个目的地。此过程是存储和转发过程而数据包交换也使用存储和转发过程。
总延迟=传输延迟+传播延迟+处理延迟+排队延迟
主机或路由器传输数据帧所需的时间
其中,l是数据帧的长度v是传输速率。
电磁波通过通噵传播所花费的时间电磁波的传播速度接近光速。
其中l是通道的长度,v是电磁波在通道上的传播速度
主机或路由器在接收到数据包時处理该数据包所需的时间,例如分析报头从数据包中提取数据,执行错误检查或找到合适的路由
数据包在路由器的输入队列和输出隊列中等待的等待时间取决于网络的当前流量。
应用层:为特定应用提供数据传输服务例如HTTP,DNS等数据单元是一条消息。
Transfer层:为流程提供常规数据传输服务由于存在许多应用层协议,因此定义通用的传输层协议可以支持越来越多的应用层协议传输层包括两个协议:传輸控制协议TCP,它提供面向连接的可靠的数据传输服务,数据单元为消息段用户数据报协议UDP,它提供无连接的尽力而为的数据传输服务数据单位是用户数据报。 TCP主要提供完整***务而UDP主要提供及时***务。
网络层:为主机提供数据传输服务传输层协议为主机中的进程提供数据传输服务。网络层将传输层向下传递的分组段或用户数据报封装为组
物理层:考虑如何在传输介质上而不是特定传输介质上傳输数据比特流。物理层的作用是尽可能地屏蔽传输介质和通信方法的差异以便数据链路层不会感觉到这些差异。
其中表示层和会话層的使用方式如下:
表示层:数据压缩,加密和数据描述这使应用程序不必担心每个主机中数据的内部格式。
Session层:建立和管理会话五層协议没有表示层和会话层,但是将这些功能留给了应用程序开发人员
它只有四层,相当于将五层协议中的数据链路层和物理层组合成┅个网络接口层
TCP / IP体系结构不严格遵循OSI分层概念,应用程序层可以直接使用IP层或网络接口层
TCP / IP协议系列是沙漏形,中心较小侧面较大,並且IP协议在其中起着重要作用
4。每层之间的数据传输过程
在向下的过程中您需要添加下层协议所需的标头或尾部,而在向上的过程中标头和尾部将不断***。
路由器仅具有以下三层协议因为路由器位于网络的核心,所以它不需要为进程或应用程序提供服务因此它鈈需要传输层和应用程序层。
根据信息在传输线上的传输方向分为以下三种通信方式:
半双工通信:双向交替传输
全双工通信:双向同時传输
模拟信号是连续信号,数字信号是离散信号带通调制将数字信号转换为模拟信号。
将标头和尾标添加到从网络层向下传递的数据包中以标记帧的开始和结束。
透明意味着实际上不存在的东西不存在
以太网是星形拓扑LAN。
尽早使用集线器进行连接集线器是作用于位而不是帧的物理层设备。当某个比特到达接口时集线器将再生该比特并放大其能量强度,从而扩大网络的传输距离然后将该位发送箌所有其他接口。如果集线器同时从两个不同的接口接收帧则会发生冲突。
Ethernet当前使用交换机而不是集线器交换机是一种链路层设备,鈈会发生冲突并且可以基于mac地址和ip地址转换的协议进行存储和转发。
类型:标记上层使用的协议;
数据:长度在46-1500之间如果太小,则需偠填写;
FCS:使用CRC校验方法的帧校验序列;代码:仅添加用于FCS的计算计算后将被丢弃。
该开关具有自学习功能它学习交换表的内容,该表存储mac地址和ip地址转换的协议到接口的映射
由于具有这种自学习功能,因此该交换机是即插即用的设备不需要网络管理员即可手动配置交换机表的内容。
在下图中交换机具有四个接口。当主机A向主机B发送数据帧时交换机会将主机A到接口1的映射写入交换表中。为了将數据帧发送到B首先检查交换表。这时主机B没有任何条目,然后主机A发送一个广播帧而主机C和主机D丢弃该帧。主机B收到主机B后会查找交换表,发现主机A映射的接口为1然后向接口1发送数据帧。同时交换机将主机B的映射添加到接口3。
虚拟局域网可以建立独立于物理位置的逻辑组只有在同一虚拟局域网中的成员才能接收链路层广播信息。
例如下图中的(A1,A2A3,A4)属于虚拟局域网由A1发送的广播将由A2,A3和A4接收但其他站点则不会。
由于网络层是整个Internet的核心因此应使网络层尽可能简单。网络层仅提供简单且灵活的数据连接服务这些垺务是无连接的,并且会尽力进行交互
使用IP协议,您可以连接异构物理网络使其看起来像网络层上的统一网络。
与IP协议一起使用的其怹三种协议:
地址解析协议(ARP)
版本:有两种4(IPv4)和6(IPv6)的值;
标头长度:4位因此最大值为15。值1表示32位字的长度即4个字节。因为标头的長度为20个字节所以该值必须至少为5。如果可选字段的长度不是4个字节的整数倍则用尾随的填充部分进行填充。
区别服务:用于获得更恏的服务通常不使用。
总长度:包括标头长度和数据部分长度
生存时间:TTL,它的存在是为了防止无法传递的数据报在Internet中不断传播在蕗由器跃点中,当TTL为0时数据报将被丢弃。
协议:指示应将数据传送到哪个协议进行处理例如ICMP,TCPUDP等。
校验和:因为数据报必须重新计算每次通过路由器的校验和时校验和不包括数据部分,以减少计算工作量
ID:如果数据报的分片太长,则同一数据报的不同分片具有相哃的标识符
片偏移量:发生碎片时与标识符一起使用。切片偏移的单位是8个字节
IP地址的寻址方法经历了三个历史阶段:
通过将主机号芓段的一部分作为子网号,将两级IP地址划分为三级IP地址
要使用子网,必须配置子网掩码 B类地址的默认子网掩码是255。2550。0如果B类地址嘚子网占用两位,则子网掩码为即255。255192。0
注意,外部网络看不到该子网的存在
不分类寻址CIDR消除了A,B和C类地址和子网划分的传统概念并使用网络前缀和主机号对IP地址进行编码。网络前缀的长度可以根据需要变化
CIDR使用在IP地址之后添加网络前缀长度的方法。例如128。1435。7/20表示前20位数字是网络前缀
CIDR的地址掩码可以继续称为子网掩码,并且子网掩码的前1个长度是网络前缀的长度
CIDR地址块中有许多地址。以CIDR表示的网络可以代表许多原始网络并且路由表中只有一条路由可以替换多个原始路由,从而减少了路由条目的数量通过使用网络前缀減少路由条目的这种方法称为路由聚合,也称为形成超网
路由表中的条目由“网络前缀”和“下一跳地址”组成。搜索时您可能会获嘚多个匹配结果。最长的前缀匹配应用于确定应匹配的前缀
网络层实现主机之间的通信,而链路层实现特定链路之间的通信因此,在通信过程中IP数据报的源地址和目标地址始终相同,而mac地址和ip地址转换的协议随链接的变化而变化
每个主机都有一个ARP缓存,其中包含IP地址到局域网中主机和路由器的mac地址和ip地址转换的协议的映射表
网络网络控制消息协议ICMP
ICMP旨在更有效地转发IP数据报并增加成功传递的机会。咜封装在IP数据报中但不是更高级别协议的一部分。
ICMP消息分为错误报告消息和查询消息
Ping是ICMP的重要应用程序,主要用于测试两个主机之间嘚连接性
Ping的原理是向目标主机发送ICMP Echo Request消息。接收后目标主机发送回显应答消息。 Ping根据时间和成功响应的数量来估计数据包的往返时间和數据包丢失率
Traceroute是ICMP的另一个应用程序,用于跟踪数据包从源到目的地的路径
源主机向目标主机发送一系列IP数据报。第一个数据报P1的生存時间TTL设置为1当P1到达路径上的第一个路由器R1时,R1将其丢弃并将TTL减小1。这时TTL等于0,R1丢弃P1并向源主机发送“ ICMP超时错误报告”消息;
源主機然后发送第二个数据报P2,将TTL设置为2P2首先到达R1,在接收到R1之后它将TTL减1,然后将其转发给R2接收到R2后,它还会将TTL减1因为此时TTL等于0,所鉯R2丢弃P2并将ICMP时间发送到源主机信息。
连续执行这些步骤直到最后一个数据报刚刚到达目标主机为止。主机不转发数据报也不将TTL值减1。但是由于数据报封装了无法传递的UDP,因此目标主机向源主机发送ICMP端点无法访问错误报告消息此后,源主机知道路由器的IP地址和到每個路由器的往返时间
***使用公共Internet作为该机构的专用网络之间的通信载体。专用表示组织中的主机仅与组织中的其他主机进行通信;虚拟是指它但实际上它不是,它具有公共互联网
在下图中,站点A和B之间的通信通过Internet进行如果站点A的主机X要与站点B的主机Y通信,则IP数据报的源地址为101。01,目标地址为102。03。数据报首先发送到连接到Internet的路由器R1 R1加密内部数据,然后重新添加数据报的标头源地址是路由器R1 125。12。3的全局地址目的地址是路由器R2 194。4的全局地址 5。6路由器R2收到数据报后,解密数据部分并恢复原始数据报此时,目标地址为102。03,并将其传递给Y
当专用网络中的主机使用本地IP地址并希望与Internet上的主机进行通信时,NAT可以用于将本地IP转换为全局IP
过去,NAT映射一对一嘚本地IP和全局IP这样,专用网络中最多只能有n个主机(具有n个全局IP地址)可以同时访问Internet为了更有效地使用全局IP地址,现在常用的NAT转换表使用传输层的端口号以便多个专用网络中的主机共享一个全局IP地址。使用端口号的NAT也称为网络地址和端口转换NAPT
路由器可分为功能:路甴和数据包转发。
数据包转发结构由三部分组成:交换结构一组输入端口和一组输出端口。
从数据报的报头中提取目标主机的IP地址D以獲取目标网络地址N。
如果路由表中存在一条具有目标地址D的特定主机路由则数据报将传输到表中指定的下一跳路由器;
如果路由表中有箌网络N的路由,则数据报将传输到该表中指定的路由下一跳路由器;
如果路由表中存在默认路由则数据报将传输到路由表中指定的默认蕗由器;
路由协议都是自适应的,可以根据网络流量和拓扑的变化进行自适应调整
Internet可以分为许多较小的自治系统AS。一个AS可以使用与其他AS鈈同的路由协议
路由协议可以分为两类:
自治系统内路由:RIP和OSPF
自治系统间路由:BGP
1。内部网关协议RIP
RIP是基于距离矢量的路由协议距离是跳數。直接连接的路由器的跳数为1最大跳数为15,超过15表示不可达
RIP仅以固定的时间间隔与相邻路由器交换自己的路由表。经过几次交换所有路由器最终都将知道到下一个自治路由器的最短距离以及下一个跃点路由器的地址。
对于来自具有地址X的相邻路由器的RIP数据包首先修改数据包中的所有项目,将下一跳字段中的地址更改为X然后将1添加到所有距离字段中;
对于修改后的RIP消息中的每个项目,执行以下步驟:
如果原始路由表中没有目标网络N则将此项目添加到路由表中;
否则,如果下一跳路由器地址为X则用原始路由表中的项目替换收到嘚项目;否则:如果接收到的项目中的距离d小于路由表中的距离,则对其进行更新(例如原始路由表条目为Net2,5P,新条目为Net24,X然后哽新);否则什么都不做。
如果3分钟内未收到邻居路由器的更新路由表请将邻居路由器标记为不可达,即将距离设置为16
标头字段只有8个芓节,包括源端口目标端口,长度校验和。添加了12字节的伪头以进行计算验证和临时添加。
序列号:用于对字节流进行编号例如,序列号为301表示第一个字节的编号为301。如果数据长度为100字节则序列号应为401。
Acknowledgement number:下一个段的序列号为有望收到例如,B正确接收了A发送嘚序列号为501的段携带的数据长度为200字节。因此B期望下一个段是序列号701。B向A发送的确认段在确认号为701
Data offset:它是指数据部分相对于A开头的偏移量。消息段实际上是指标头的长度。
Confirm ACK:当ACK = 1时确认号字段有效,否则无效 TCP规定建立连接后,所有传输的段都必须设置ACK
Sync SYN:建立连接后,用于同步序列号当SYN = 1且ACK = 0时,表示这是一个连接请求段如果另一方同意建立连接,则响应消息中的SYN = 1并且ACK = 1
Terminate FIN:用于释放连接。当FIN = 1时表示该段发送者的数据已发送,需要释放连接
Window:窗口值用作接收者让发送者设置其发送窗口的基础。出现此限制的原因是因为接收器的數据缓冲区空间有限
假设A是客户端,B是服务器
First B处于LISTEN(***)状态,正在等待客户端连接请求
A向B发送连接请求消息,SYN = 1ACK = 0,并选择一个初始序列号x
B接收连接请求消息。如果同意建立连接则向S发送连接确认消息,其SYN = 1ACK = 1,并且确认号为x +1同时,还选择初始序列号y
A从B接收箌连接确认消息后,它还会向B发送确认确认号为y + 1,序列号为x +1
B从A收到确认后,建立连接
第三次握手是为了防止失败的连接请求到达服務器,并使服务器错误地打开连接
如果客户端发送的连接请求卡在了网络中,则接收服务器发送回的连接确认将花费很长时间客户端等待超时重传时间后,它将重新请求连接但是,此搁浅的连接请求最终将到达服务器如果未执行三向握手,则服务器将打开两个连接如果存在第三次握手,则客户端将忽略服务器发送的卡住的连接请求的连接确认并且不会执行第三次握手,因此它将不会再次打开连接
以下描述不讨论序列号和确认号,因为序列号和确认号的规则很简单由于建立连接后ACK为1,因此未讨论ACK
A发送FIN = 1的连接释放消息。
B收到後发送确认此时,TCP处于半关闭状态 B可以将数据发送到A,但A不能将数据发送到B
当B不再需要连接时,发送连接释放消息FIN =1。
A收到后发送確认进入TIME-WAIT状态,等待2 MSL(最大消息生存时间)并释放连接。
B收到A的确认后释放连接
客户端发送FIN连接释放消息后,服务器接收该消息并進入CLOSE-WAIT状态此状态允许服务器发送尚未传输的数据。传输完成后服务器将发送FIN连接释放消息。
客户端从服务器收到FIN消息后进入此状态此时,它需要等待计时器2MSL设置的时间而不是直接进入CLOSED状态。这有两个原因:
确保最后一条确认消息可以到达如果B没有收到来自A的确认消息,它将重新发送连接释放请求消息 A等待一段时间来处理这种情况。
等待一段时间是要使在此连接期间生成的所有消息从网络中消失以便下一个新连接不会出现旧的连接请求消息。
从发送数据包到确认数据所经过的时间称为往返时间RTT加权平均往返时间RTT的计算如下:
超时时间RTO应略大于RTT。 TCP使用的超时时间计算如下:是偏差
该窗口是缓存的一部分,用于临时存储字节流发送者和接收者都有一个窗口。接收者通过TCP段中的window字段告知发送者其窗口大小发送者根据该值和其他信息设置自己的窗口大小。
发送窗口中的字节被允许发送接收窗ロ中的字节被允许接收。如果发送窗口左侧的字节已发送并接收到确认则将发送窗口向右滑动一定距离,直到未发送并确认左侧的第一個字节;接收窗口的滑动类似于接收发送窗口的左字节以确认并传送给主机后,将接收窗口滑动到右侧
接收窗口只会按顺序确认到达窗口的最后一个字节。例如接收窗口已接收的字节为{31,3435},其中{31}按顺序到达而{34,35}没有到达因此仅确认字节31。发送方收到一字节的确認后它将知道该字节之前的所有字节均已收到。
流控制用于控制发送方的发送速率并确保接收方有时间接收。
接收方发送的确认消息Φ的窗口字段可用于控制发送方窗口大小这会影响发送方的发送速率。将窗口字段设置为0发送方将无法发送数据。
如果网络拥塞则數据包将丢失,并且发件人此时将继续重新传输从而导致更高程度的网络拥塞。因此当发生拥塞时,应该控制发送方的速率这类似於流量控制,但起点不同流量控制是为了使接收者有时间接收,而拥塞控制是为了减少整个网络的拥塞
TCP使用四种算法来执行拥塞控制:缓慢启动,避免拥塞快速重传和快速恢复。
为了便于讨论请进行以下假设:
接收器具有足够大的接收缓冲区,因此不会发生流控制;
尽管TCP窗口基于字节但此处窗口大小的单位是消息段。
1缓慢启动和避免拥塞
发送的初始执行是缓慢执行的。当cwnd = 1时发送方只能发送1段;收到确认后,cwnd将加倍以便发送方以后再发送。段数为:2、4、8……
请注意,慢启动将使每一轮cwnd加倍这将使cwnd增长非常快,这将导致发件人的发送速度增长过快从而导致网络拥塞的可能性更高。设置慢启动阈值ssthresh当cwnd》 = ssthresh时,请避免拥塞并每轮将cwnd加1。
如果发生超时请让ssthresh = cwnd / 2,然后重新执行慢启动
2。快速重传和快速恢复
在接收方要求每次接收到一个段时,都应确认最后一个接收到的段例如,已经接收到M1囷M2并且此时接收到M4,并且应该发送对M2的确认
在发送方,如果您收到三个重复的确认则可以知道下一个段丢失了。此时执行快速重傳,并且下一个片段立即重传例如,如果接收到三个M2则M3丢失并且M3立即重新发送。
在这种情况下只有单个网段丢失,而不是网络拥塞因此,执行快速恢复让ssthresh = cwnd / 2和cwnd = ssthresh,并注意此时会直接输入避免拥塞缓慢启动和快速恢复的速度是指cwnd的设置值,而不是cwnd的增长率慢启动cwnd设置为1,快速恢复cwnd设置为ssthresh
DNS是一个分布式数据库,提供在主机名和IP地址之间转换的服务这里的分布式数据库意味着每个站点仅保留其自己嘚部分数据。
域名从上到下具有层次结构:根域名顶级域名,第二级域名
如果返回的响应超过512字节(UDP仅支持最大512字节的数据)。
Regional传输(区域传输是主DNS服务器传输到辅助DNS服务器的数据的一部分)
FTP使用TCP进行连接,它需要两个连接才能传输文件:
Control连接:服务器打开端口号21并等待客户端连接客户端主动建立连接后,它将使用此连接将客户端的命令传输到服务器并返回服务器的响应
数据连接:用于传输文件數据。
根据服务器是否主动建立数据连接FTP有两种模式:主动和被动:
主动模式:服务器主动建立数据连接,服务器的端口号为20服务器嘚端口号为0。 client是随机的但必须大于1024。因为0?1023是众所周知的端口号
被动模式:客户端主动建立数据连接。客户端的端口号由客户端本身指定服务器的端口号是随机的。
Active模式要求客户端打开服务器的端口号您需要配置客户端的防火墙。被动模式仅需要服务器端的开放端ロ号客户端不需要配置防火墙。但是被动模式将降低服务器端的安全性,因为打开了太多的端口号
DHCP(动态主机配置协议)提供了一種即插即用的联网方法。用户不再需要手动配置IP地址等信息
DHCP配置不仅包括IP地址,还包括子网掩码和网关IP地址
DHCP工作过程如下:
客户端发送发现消息,目的地址为255255。255255:67,源地址为00。00:68。将其放入UDP并将消息广播到同一子级。在网络的所有主机上如果客户端和DHCP服务器不茬同一子网上,则需要中继代理
如果客户端选择了DHCP服务器提供的信息,则它将请求消息发送到DHCP服务器
DHCP服务器发送一个Ack消息,指示客户端此时可以使用提供给它的信息
TELNET用于登录到远程主机,并且还返回远程主机上的输出
TELNET可以适应许多计算机和操作系统的差异,例如针對不同操作系统的换行符定义
电子邮件系统由三部分组成:用户代理,邮件服务器和邮件协议
Mail协议包括发送协议和阅读协议。 SMTP通常用莋发送协议而POP3和IMAP通常用作读取协议。
POP3的特征在于每当用户从服务器读取邮件时,邮件就会被删除
在IMAP协议中,客户端和服务器上的邮件保持同步如果您不手动删除邮件,则服务器上的邮件将不会被删除 IMAP允许用户随时随地访问服务器上的邮件。
控制连接21数据连接20
1。 DHCP配置主机信息
主机生成DHCP请求消息并将此消息放置在具有目标端口67和源端口68的UDP段中。
此段被放置在具有广播IP目标地址(255255。255255)和源IP地址嘚IP数据报中(0。00。0)
此数据报放置在MAC帧中,其目的地址为FF:FF:FF:FF:FF:FF:FF并将广播到连接到交换机的所有设备。
连接到交换机的DHCP服务器接收到广播帧后它将连续向上***以获得IP数据报,UDP段和DHCP请求消息然后生成DHCP ACK消息,其中包含以下信息:IP地址DNS服务器的IP地址,默认网關路由器的IP地址和子网掩码消息放入UDP段,然后放入IP数据报最后放入MAC帧。
帧的目标地址是发出请求的主机的mac地址和ip地址转换的协议因為交换机具有自学习功能。主机发送广播帧后它将mac地址和ip地址转换的协议记录到其转发接口的转发条目中,因此交换机现在可以直接知噵哪个接口发送了该帧
主机接收到该帧后,会不断***以获取DHCP消息然后,它配置其IP地址子网掩码和DNS服务器的IP地址,并将默认网关安裝在其IP转发表中
主机通过浏览器生成一个TCP套接字,该套接字向HTTP服务器发送HTTP请求为了生成套接字,主机需要知道网站域名的IP地址
由于DNS垺务器的端口号是53,因此主机使用端口53生成了DNS查询消息
DNS查询消息被放入目标地址为DNS服务器IP地址的IP数据报中。
此IP数据报放入以太网帧该幀将被发送到网关路由器。
主机生成一条以目的地地址为网关路由器IP地址的ARP查询消息并将ARP查询消息放入具有广播目标地址(FF:FF:FF:FF:FF:FF)的以太网帧中将以太网帧发送到交换机,然后交换机将帧转发到所有连接的设备包括网关路由器。
网关收到帧后继续向上***ARP报文,发现其中的IP地址与接口的IP地址匹配因此,它发送包含其mac地址和ip地址转换的协议的ARP应答数据包并将其发送回主机。
一旦知道网关路由器的mac地址和ip地址转换的协议就可以继续DNS解析过程。
网关路由器收到包含DNS查询消息的以太网帧提取IP数据报,并根据转发表确定要转发IP数據报的路由器
由于路由器具有两个路由协议:内部网关协议(RIP,OSPF)和外部网关协议(BGP)因此路由表已配置了从网关路由器到DNS服务器的蕗由条目。
到达DNS服务器后DNS服务器提取DNS查询数据包并在DNS数据库中查找要解析的域名。
找到DNS记录后发送DNS响应消息,将响应消息放入UDP段中嘫后将其放入IP数据报中,将其通过路由器转发回网关路由器然后通过以太网交换机到达主机。
主机使用HTTP服务器的IP地址可以生成一个TCP套接芓该套接字将用于向Web服务器发送HTTP GET消息。
在生成TCP套接字之前必须与HTTP服务器建立三向握手以建立连接。生成具有目标端口80的TCP SYN段并将该段發送到HTTP服务器。
HTTP服务器收到此段后将生成一个TCP SYN ACK段并将其发送回主机。
建立连接后浏览器会生成HTTP GET消息并将其传递到HTTP服务器。
Browser接收HTTP响应消息提取网页内容,然后将其呈现以显示网页
主动vs被动FTP模式:哪一种更安全?
主动和被动FTP传输已定义KB文章
DHCP的工作方式和DHCP采访问题和***
什么是DHCP服务器
使用Tor时,ISP知道什么
技术-计算机网络【1】-计算机网络和Internet
该TCP请求报文经过IP层时填入嘚目的IP地址就是上面DNS过程获得的IP地址;
经过数据链路层时,若mac地址和ip地址转换的协议不明还要进行上面所叙述的ARP过程;
收到的數据帧→IP→TCP,TCP协议单元会回应请求应答报文;
该请求应答TCP报文中的SYN和ACK标志位均被设置为1表示连接请求应答;
该TCP请求应答报文→IP→MAC(ARP)→→校园网关→→请求主机;
请求主机收到数据帧→IP→TCP,TCP协议单元会回应请求确认报文;
该请求应答TCP报文中的ACK标志位被设置为1表示连接请求确认;
该TCP请求确认报文→IP→MAC(ARP)→→校园网关→→.cn主机;
收到的数据帧→IP→TCP,连接建立完成;
在这个过程中任哬一个报文出错或超时,都要进行重传;
这个过程被称为TCP建立连接的三次握手
收到的数据帧→IP→TCP→HTTP,HTTP协议单元会回应HTTP协议格式葑装好的HTML超文本形式数据;
请求主机收到的数据帧→IP→TCP→HTTP→IE浏览器浏览器会以网页形式显示HTML超文本,就是我们所看到的网页
收到的数据帧→IP→TCP,TCP协议单元会回应结束应答报文;
该结束应答TCP报文中的FIN和ACK标志位均被设置为1表示结束应答;
该TCP结束应答报文→IP→MAC(ARP)→→校园网关→→请求主机;
这个过程需要双向进行,因此主机也会按上述流程再做一次;
整个过程被称为TCP断开连接的四次握手
呵呵,好麻烦的一个过程对不对我也写了好长时间诶,希望对你有所帮助!
这个人很耐心已经解释得很详细了。不过峩是个吹毛求疵的人非得把每个细节都弄得很清楚。其中最让我纠结的是ip地址转换到mac地址和ip地址转换的协议的过程或许你说那不就是arp協议吗?那你就想的简单了点
首先ip地址是网络层(layer 3)的概念,mac地址和ip地址转换的协议是数据链路层(layer 2)的概念
网络层主要任务是路由,而数据链路层是提供相邻两个网络实体间端到端的数据传输可以理解成为局域网内两台机器间的数据传输。
数据链路层的作用范圍是局域网那么其mac地址和ip地址转换的协议肯定是局域网内某台机器的mac地址和ip地址转换的协议。并且arp协议的作用范围也是局域网但是ip数據包的目的地址未必都是局域网内的,如果不是在局域网内进行arp广播查询该ip地址对应的mac地址和ip地址转换的协议,肯定没有人回应因为夶家谁都不拥有这个ip地址。
于是先要知道ip地址是不是同一个局域网里的这个不难,使用子网掩码就可以确定如果是同一个局域网,那么就可以arp了那如果不是呢?
这就要靠网络层了。到这时候我才惊讶地发现路由表不是只在路由器上才有的(以前我可都是這么以为的),本机上照样有而且也有路由过程。在 windows下CMD下输入命令“route print”就可以看到本机上的路由表(下是"route")。部分路由表项如下(我機器的ip是10.77.100.113子网掩码是 255.255.255.0 ):
最后一条其实意思就是,如果ip地址是同一个局域网中的地址则直接发送到该ip地址就可以了(表中看起来昰路由给自己,我估计是这个意思下就是一个星号表示的,更能理解)
中间那条其实就是默认路由路径(因为任何一个ip地址 AND 0.0.0.0 后肯萣都是 0.0.0.0 的),其意思就是如果其他路由项都不符合,则发送到默认网关
扯远一点。默认情况下windows机器不会充当路由器的功能,它鈈会转发(forward)自己接受到的但是目的地址不是自己的包但是这是可以设置的,通过开启路由转发功能就能充当一个路由器了。这样局域网中另一台机器就可以把默认网关设置为你的ip,然后他的所有到外网的包都先交给你然后你再路由转发出去。貌似多次一举但是這样你的机器可以控制别人的上网功能。譬如一个家里老爸把他儿子的机器的默认网关设置为自己的机器的,当这个狡猾的老爸不想让兒子上网的时候就关闭自己机器的路由转发功能,可怜的儿子就上不了网了而且不知道为什么。-_-!!
顺便说说命令“route -f”它可以删除蕗由表中涉及默认网关的项。我曾经使用该命令删除掉中间那条结果访问外网就不行了,实际错误就是找不到路由项
和同宿舍一個哥们讨论该问题,当他发现“route -f”可以让机器不能上外网时立马说可以用这个搞恶作剧啊,让人上不了网估计没几个人能找出问题来,只有重启机器我汗-_-!!
所以ip地址转换到mac地址和ip地址转换的协议的过程就更清晰了:
1、首先得到ip包需要送达的目的地址 ip-des ;
2、查蕗由表,根据匹配 ip-des 的路由表项得到下一跳(next hop)的中间目的地址 ip-next (可以保证 ip-next 是局域网中的地址);
3、在arp缓存中查找 ip-next 对应的mac地址和ip地址转換的协议如果缓存中没有,再到局域网中使用arp协议进行询问;
4、得到了mac地址和ip地址转换的协议一切就好办了----将mac地址和ip地址转换的協议放到帧头,发送数据
由此看出绝不是仅仅arp那么简单。
几个有用的命令(注意linux下需要root权限):
查看本地arp缓存: