TCP/IP入门——基础知识概念(7个小实验理解TCP/IP)


  TCP/IP(Transmission Control Protocol / Internet Protocol) 协议是一个协议集合,IP协议是找到对方的详细地址,TCP协议是安全的把数据传输给对方。

IP协议

  规定网络地址的协议叫做IP协议,它所定义的地址被称为IP地址。IP实现两个基本功能:寻址和分段。IP协议的作用主要有两个:

  1. 为每台计算机分配IP地址
  2. 确定哪些地址在同一个子网络

TCP协议(传输控制协议)

  UDP协议的优点是比较简单,容易实现;缺点在于可靠性较差,一旦数据包发出,无法知道对方是否收到。为了解决该问题,提高网络可靠性,TCP协议就诞生了。为了确保信息能够确保准确无误的到达,TCP采用了著名的三次握手策略。
在这里插入图片描述

图1 TCP的握手策略

1 什么是三次握手?

三次握手是建立连接的过程。

  1. 当客户端向服务端发起连接时,会先发一包syn包连接请求数据,进行询问,能否建立连接。
  2. 如果服务端同意连接,则回复一包syn+ack包。
  3. 客户端收到之后回复一包ack包,连接建立。

2 为什么是三次握手而不是两次?

  假设采用两次握手建立连接,客户端向服务端发送了一个syn包,来请求建立连接,因为某些未知原因,并没有到达服务器,在中间某个网络节点产生了滞留,为了建立连接客户端会重发syn包。这次的数据包正常送达,服务端回复syn+ack之后建立了连接。
  但是如果这时第一包数据阻塞的网点节点,突然恢复,第一包syn包又送达到服务端,这时服务端会误认为是客户端又发起了一个新的连接,从而在两次握手之后,进入等待数据状态,服务端认为是两个连接,而客户端认为是一个连接,造成了状态不一致。
在这里插入图片描述

图2 状态不一致

  如果在三次握手的情况下,服务端收不到最后的ack包,自然不会认为连接建立成功,所以三次握手本质上来说,就是为了保证在不可靠的网络链路中,建立起可靠的连接。如syn包阻塞重发会导致服务器创建多重连接,而客户端只接受唯一连接,从而造成状态不一致的情况。

3 什么是四次挥手?

在这里插入图片描述

图3 四次挥手

  处于连接状态的客户端和服务端,都可以发起关闭连接请求,此时需要四次挥手来进行连接关闭。
  1. 假设客户端主动发起连接关闭请求,他需要向服务端发起一包fin包,表示要关闭连接,自己进入终止等待1状态,这是第一次挥手
  2. 服务端收到fin包,发送一包ack包,表示自己进入了关闭等待状态,客户端进入终止等待2状态,这是第二次挥手
  3. 服务端此时还可以发送未发送的数据,而客户端还可以接收数据,待服务端发送完数据之后,发送一包fin包,进入最后确认状态。这是第三次挥手
  4. 客户端收到之后回复ack包,进入超时等待状态,经过超时时间后关闭连接,而服务端收到ack包后,立即关闭连接。这是第四次挥手

为什么客户端需要等待超时时间?

这是为了保证服务端已收到ack包。

  因为假设客户端发送完最后一包ack包后就释放了连接,一旦ack包在网络中丢失,服务端将一直停留在最后确认状态。如果客户端发送最后一包ack包后,等待一段时间,这时服务端因为没有收到ack包,会重发fin包,客户端会响应这个fin包,重发ack包并刷新超时时间。保证在不可靠的网络链路中,进行可靠的连接断开确认。

4 为什么要四次挥手?

  由于 TCP 的半关闭(half-close)特性,任何一方都可以在数据传送结束后,发出连接关闭的通知,待对方确认后进入半关闭状态。当另一方也没有数据再发送的时候,则发出连接关闭通知,对方确认后就完全关闭了TCP连接。
  通俗的来说,两次挥手就可以释放一端到另一端的 TCP 连接,完全释放连接一共需要四次挥手。

7个小实验理解TCP/IP

写在开头

  在所有网络上的计算机中,有些是服务器(Server),有些是客户端(Client),在服务器上运行的程序为客户端提供服务。“集线器”(Hub)是负责把各台计算机的网线相互连接在一起的集线设备。“路由器”(Router)是负责把公司内的网络和互联网连接起来的设备。
图1 公司内部LAN网络

图4 公司内部LAN网络

CSMA/CD(Carrier Sense Multiple Access with Collision Detection,带冲突检测的载波监听多路访问)

  • 载波监听(Carrier Sense)指这套机制会去监听表示网络是否正在使用的电信号。
  • 多路复用(Multiple Access)指的是多个设备可以同时访问传输介质。
  • 带冲突检测则表示这套机制会去检测因同一时刻的传输而导致的电信号冲突。在这里插入图片描述
图5 CSMA/CD的工作方式

实验1 查看计算机中网卡的MAC地址

  可以用被称作MAC(Media Access Control)地址的编号来指定电信号的接收者。在每一块网卡中所带有的ROM中,都预先烧录了一个唯一的MAC地址。网卡的制造厂商负责确定这个MAC地址是什么(MAC地址由制造厂商的编号和产品编号两部分组成),世界上的每一个MAC地址都是独一无二的(相当于设备的身份证号)。

方法一 ipconfig /all查看:

win+R输入cmd打开命令提示符,输入如下命令:

igconfig /all

在这里插入图片描述
或者显示为Physical Address,冒号后面的、用“-”分隔的6个十六进制数(每个数占8比特)就是MAC地址,其中前三个代表制造商,后三个代表产品编号。

方法二

还可以通过点击网络连接-更改网络适配器的方法查看(具体方法见),需要注意的是,目前的计算机基本上都不止一张网卡(无线网卡+有线网卡),每个网卡均对应一个MAC地址。

实验2 查看计算机的IP地址

  MAC地址虽然可以在硬件层面上表示网卡,但是只有MAC地址也很不方便。因此,在TCP/IP网络中,除了硬件上的MAC地址,还需要为每台计算机设定一个软件上的编号,即IP地址。
  通常把设定了IP地址的计算机称为“主机”(Host),因为路由器也是计算机的一种,所以它也有IP地址。在TCP/IP网络中,传输的数据都会携带MAC地址和IP地址两个地址。(IP地址描述了设备“在哪里”

IP地址

  IP地址是一个32比特的整数,每8比特为一组,组间用“.”分隔,分成4段表示。8比特所表示的整数换算成十进制后范围是0~255,因此可用作IP地址的整数是0.0.0.0 ~ 255.255.255.255,共计42,9496,7296个。通过IP地址就可以轻松地对计算机进行分组管理了,比如用IP地址的第1段到第3段的数值代表公司,用第4段的数值代表公司内部的计算机。

例如,在AAA.BBB.CCC这个公司内,如果有一台计算机的编号为xxx,则它的IP地址就是AAA.BBB.CCC.xxx;看到AAA.BBB.CCC.yyy这样一个IP地址,就知道这是公司内的一台计算机。通常把IP地址中表示分组(即LAN)的部分称为“网络地址”,表示各台计算机(即主机)的部分称为“主机地址”。 在本例中,AAA.BBB.CCC这一部分为网络地址,而xxx或者yyy这一部分是主机地址。

在这里插入图片描述

子网掩码的作用——区分IP地址中的网络地址和主机地址

以子网掩码255.255.255.240为例:
  子网掩码的作用是标识出在32位比特的IP地址中,从哪一位到哪一位是网络地址,从哪一位到哪一位是主机地址。把255.255.255.240用二进制表示的话,结果如下:
11111111.11111111.11111111.11110000
  子网掩码中,值为1的那些位对应着IP地址中的网络地址,后面值为0的那些位则对应着主机地址。因此255.255.255.240这个子网掩码就表示,其所对应的IP地址前28比特是网络地址,后4比特是主机地址。

实验3 了解DHCP服务器的作用

  DHCP全称Dynamic Host Configuration Protocol(动态主机设置协议),是一个应用于局域网的网络协议,该协议允许服务器向客户端动态分配IP地址和配置信息。该协议位于OSI模型的应用层,使用UDP协议工作,主要有两个用途:

  • 用于内部网或者网络服务供应商自动分配IP地址给用户
  • 用于内部网管理员作为对所有电脑作中央管理的手段

  DHCP服务器上记录着可以被分配到LAN内计算机的IP地址范围和子网掩码的值。作为DHCP客户端的计算机在启动时,就可以从中知道哪些IP地址还没有分配给其他计算机。
在这里插入图片描述
  通常会把路由器的IP地址配置在“默认网关”配置项中,也就是说路由器就是从LAN通往互联网世界的入口,路由器的IP地址也可以从DHCP服务器获取。

网关:连接网络内部和外网(互联网)的通道,路由器的地址就是网关地址。一般这个地址设置为子网掩码能分配IP地址的那个最大的IP。如子网掩码为255.255.255.0,那么这个网关地址就可以设置为255.255.255.254。

实验4 路由器是数据传输过程中的指路人

  路由器正如其名,就是决定数据传输路径的设备。当从公司内的计算机向另一家公司的计算机发送数据时,一个不属于LAN内计算机的IP地址被附加到数据的发送目的地字段上,这样的数据虽然会被LAN内的计算机所忽略,但是不会被路由器忽略。

路由器的工作原理就是查看附加到数据上的IP地址中的网络地址部分,只要发现这个数据不是发送给LAN内计算机的,就把它发送到LAN外,即互联网的世界中。

  分布在世界各地的LAN中的路由器相互交换着信息,互联网因这种信息的交换得以联通,这种信息被称作“路由表”,用来记录应该把数据转发到哪里,在一台路由器的路由表中,只会记录通往与之相邻的路由器的路径,而并不会记录世界范围内的所有传输路径。

观察路由表

win+R输入cmd打开命令提示符,输入如下命令:

route print

路由表示例

图6 路由表示例

  路由表由5列构成,前四列记录着数据发送的目的地和路由器的IP地址等信息,跃点数用来在路由表里的多个路由中选择与转发包中的目标地址最为匹配的路由。所选的路由具有最少的跃点数。跃点数能够反映跃点的数量、路径的速度、路径可靠性、路径吞吐量以及管理属性。

在路由表中还有如下的规则:

  • 如果数据的发送目的地就在本LAN中,则可以直接发送数据而无需经过路由器转发;
  • 如果在LAN外或者发送目的地的IP地址不在路由表中,则需要经过路由器转发。

实验5 查看路由器的路由过程

  假如当前我们正在浏览www.baidu.com,百度的Web服务器中的数据,要经过若干个路由器的转发才能达到各位的计算机上,通常把这种数据经过路由器转发的过程称为“路由”(Routing)。在命令提示符的窗口中输入tracert命令,即可查看路由过程,以baidu.com为例:

tracert www.baidu.com

在这里插入图片描述
  可以看到,从公司内的LAN出发,通过17次路由才终于到达了百度的Web服务器。

接入路由器
ISP的BAS路由器
主干网中的路由器
服务器所在的ISP的BAS路由器
服务器所在的局域网的接入路由器

ISP:网络服务提供商
BAS:Broadband Access Server,通常也叫BRAS( Broadband Remote Access Server) ,是面向宽带网络应用的新型接入网关。

实验6 DNS服务器可以把主机名解析成IP地址

  DNS(Domain Name System,域名系统)服务器,其作用在于将形如www.baidu.com的域名解析为了14.215.177.39这样的IP地址。

一个域名可以绑定多个IP,但是同一时刻下,只能解析出一个IP提供使用,其余的IP等待轮询。

  每个计算机都有一个主机名,每个LAN也都有一个域名,通常把这种由主机名和域名组合起来所形成的名字称作FQDN(Fully Qualified Domain Name,完整限定域名),该名字就是能够标识计算机的一个世界范围内独一无二的名字,这个名字与IP地址的作用是等价的。
  在互联网中,难以记忆的IP地址使用起来很麻烦,于是人们就发明出了DNS服务器,这样只需要使用FQDN,DNS服务器就可以自动地把它解析为IP地址了(该过程叫做“域名解析”)。DNS服务器通常被部署在各个LAN中,里面记录着FQDN和IP地址的对应关系表。

查询FQDN


主机名+主DNS后缀 = FQDN
在这里插入图片描述

图7 使用nslookup进行域名解析

实验7 查看IP地址和MAC地址的对应关系

  在互联网的世界中,到处传输的都是附带了IP地址的数据,但是能够标识作为数据最终接收者网卡的,还是MAC地址。于是在计算机中就加入了一种程序,用于实现由IP地址到MAC地址的转换,这种功能被称作ARP(Address Resolution Protocol,地址解析协议)。

Q:IP地址本身已经就可以定位唯一的主机了,为什么还需要转换成物理地址?
A:因为IP地址是逻辑地址,是动态分配的,现在使用的是这个地址,下次再联网,使用的就是另外一个了。

  ARP的工作方式为广播(Broadcast),如果为了查询MAC地址,每回都要进行广播询问,那么查询的效率就会降低,于是ARP还提供了缓存功能,当向各个计算机都询问完一轮之后,就会把得到的MAC地址和IP地址的对应关系缓存起来(临时保存在内存中),存起来的这些对应关系信息称作“ARP缓存表”。只要在命令行提示符窗口中输入arp -a命令,即可查看当前ARP缓存表中的内容。
在这里插入图片描述

TCP/IP网络的层级模型

  遵循TCP/IP表现在统一的数据格式上,例如,敲打键盘输入的电子邮件正文等数据,并不是原封不动地发送出去的,而是先通过实现了TCP协议的程序附加上遵守TCP约束所需的信息,然后再通过实现了IP协议的程序,进一步附加上遵守IP约束所需的信息。实际上计算机发送的是以包为单位的、附加了各种各样信息的数据。
在这里插入图片描述

图8 附加了各种信息的数据包

  TCP协议使用被称作“TCP端口号”的数字识别上层的应用程序。TCP端口号中有一些是预先定义好的,比如Web使用80端口,电子邮件使用25端口(用于发送)和110端口(用于接收)。

在这里插入图片描述

图9 实现了TCP/IP网络的程序的层级

参考资料

[1]《计算机是怎样跑起来的》
[2] 一条视频讲清楚TCP协议与UDP协议-什么是三次握手与四次挥手

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值