计算机网络学习笔记(一)——明白通信原理

互联网通信原理

操作环境:

系统ip
宿主机win10系统
客户机Ubuntu10.0.2.15
exec 9 <> /dec/tcp/www.baidu.com/80 
解释:
9:新建的文件描述符 相当于Java中的变量名
<>:标准输入输出流 , <表示输出 , > 表示输入
/dec/tcp/www.baidu.com/80 : 表示路径,Linux中一切皆文件

echo -e "hello world\n"
解释:
echo: 输出到屏幕.
-e: 使得其识别转义字符
不加-e则原样输出\n 
因此向屏幕打印 hello world 后换行
echo -e "GET / HTTP/ 1.0\n" 1 >& 9

解释:
让echo的标准输出流1重定向到文件描述符9
由于9是文件描述符,因此>后面需加上&,否则9会被识别成9这个文件
GET: HTTP协议中请求方式
/:表示百度主页
HTTP/1.0 :协议及版本号
1:标准输出流

cat 0<& 9
0:
从9读取响应内容到标准输入0 然后cat屏幕输出

在这里插入图片描述

通过上面实验可以知道:
应用层准备数据和协议,内核负责建立连接,物理层进行真正的传输。

传输控制层

TCP:面向连接的、可靠的传输协议

解释:
面向连接的:TCP连接不是实质上的、物理上的连接(如通过网线把通信双方连接起来),而是虚无的。从三次握手到开辟资源的过程就是面向连接的过程。

可靠的: 通过确认机制来保证通信的可靠
在建立TCP连接之前,通信双方进行三次握手,进行握手的目的是为对方开辟资源
三次握手

在这里插入图片描述

ack不可省略:
同行要保证双向都是通的,syn +ack只能保证客户端到服务端的输入是通的。需要客户端回送ack确认来保证服务端到客户端的输出也是通的。

四次分手

netstat -n
解释:
显示所有已建立的有效连接。

netstat -natp
解释 :
netstat:显示网络状态
a:表示所有
tp:表示tcp
该命令表示显示所有tcp连接 

在这里插入图片描述上表表示本机与外界的通信情况
端口号:0~65535

windows:192.168.150.1
远程:192.168.150.11

为什么有端口号?
端口号标识通讯过程中的应用程序。socket套接字保证数据隔离。
socket: {ip1 :port1 ip2:port2},每一个socket是独立的、隔离的。

为什么要断开连接?
资源是有限的,当通信双方长时间不再进行数据交互时就要断开连接,释放有限的资源。

四次分手过程

在这里插入图片描述

curl www.baidu.com
curl命令会建立连接然后 将http协议发给百度
最后断开连接

sudo tcpdump -nn -i enp0s3 port 80
使用tcpdump抓包
-i: 以太网卡
port: 后接端口号
表示抓取网卡为enp0s3、端口号为80的网络包

在这里插入图片描述

cd /etc/sysconfig/network-scripts/

网络层

route -n 
解释:
查看路由表

在这里插入图片描述【解释】
可以看到路由表中有三个条目,同一局域网的(同一网段的),即网络号为10.0.2或169.254的,通过交换机转发。其他的不是同一局域网的,通过默认网关10.0.2.2转发。

ARP 下一跳机制

现在有两个局域网,处于局域网1中的pc1欲往发送数据包给局域网2中pc5。
在这里插入图片描述

在网络层通过路由转发表,pc1知道要转发给下一跳192.168.1.2,但是不知道下一跳的mac地址,需通过 ARP机制获得,获得过程如下:在这里插入图片描述
所以在数据包转发过程中,通过ARP机制获得下一跳Mac地址,数据包的MAC地址一直被替换,而目的ip地址不变。

arp -a

解释:
列出当前电脑所缓存的mac地址和ip地址对应表

arp -d  

解释:
删除Arp表项中该ip所在条目的

在这里插入图片描述
不知道为什么我的arp表项只有一条,都是通过10.0.2.2转发出去的?

先arp -a 查看本地的所有arp高速缓存项目,发现只有通过10.0.2.2这一网关转发出去的一条。
使用arp -d + ip删除该条目,由于arp会很快将该条目恢复过来,因此使用Linux中非逻辑&& ,使得curl命令在arp -d立即执行。在使用tcpdum抓包,查看arp获得过程。
在这里插入图片描述

在这里插入图片描述
上述两表的结果与理论一致。 百度与本机不属于同一局域网,由路由表可知,是通过默认网关10.0.2.2转发。该网关的mac地址被通过arp -d 删除了,此时arp机制就起作用了,先广播请求包,然后获得默认网关的mac地址。至此阻塞的数据包得以通过默认网关转发。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值