完整的一次tcp通讯,了解tcp网络5层模型

完整的tcp通信过程

##让当前shell程序与百度建立连接,8(文件描述符)指向了与百度连接的Socket
exec 8<> /dev/tcp/www.baidu.com/80
##输出http头信息到8,-e表示解析转义字符\n
echo -e "GET / HTTP/1.0\n"  1>& 8
##从8中读取流信息
cat 0<& 8

tcp/ip协议5层模型:

在这里插入图片描述

用户层(应用层):为用户的应用进程提供服务

HTTP协议

发送的http请求头.

echo -e "GET / HTTP/1.0\n"  1>& 8

内核层:

1.传输控制层:(确认数据传输)

数据传输协议TCP 或 UDP

####TCP:面向连接,传输可靠.

#####面向连接(三次握手):
在这里插入图片描述

双方资源开辟,抛出线程

#####传输字段解释:

URG:紧急指针(urgent pointer)有效。

ACK:确认序号有效。(为了与确认号ack区分开,我们用大写表示)

PSH:接收方应该尽快将这个报文交给应用层。

RST:重置连接。

SYN:发起一个新连接。

FIN:释放一个连接。

SOCKET 套接字:

是一对 ip+port -> ip+port

服务端,ip是固定的;

客户端,ip的随机的(0-65535)

linux中Socket 会映射到fd/某个进程PID绑定.

四次分手:

在这里插入图片描述

三次握手到四次分手不可分割:

使用抓包工具抓取,查看http请求(传输控制层)的全部过程:

抓包工具: tcpdump

##访问百度网页
curl www.baidu.com
## -nn 将每个监听到的数据包中的域名转换成IP、端口从应用名称转换成端口号后显示
## -i 指定监听的网络接口(网卡);
## -X 把协议头和包内容都原原本本的显示出来
tcpdump -nn -i eth0 port 80

抓取结果:
在这里插入图片描述

由此结果可见,确认机制,保证传输可靠.

2.网络层(数据传输路径及地址选择):

查看自身网络的一些配置:

ip=网络号+主机号

打开网卡设置:

cd /etc/sysconfig/network-scripts/
##编辑网卡配置文件
vi ifcfg-eth0

在这里插入图片描述
在这里插入图片描述

网络层寻址原理:

目标ip地址---->查找路由表------>子网掩码进行与运算—>和网络号做匹配–>如果找不到匹配的网络号–>进入网关(路由器,下一跳)

route -n

路由表

在这里插入图片描述

192.168.111:网络号.

192.168.111.2:下一跳(路由器)

下一跳怎么找到下一个下一跳?

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

链路层:

​ 两个相邻结点之间传送数据是直接传送的(点对点),这时就需要使用专门的链路层的协议。

携带数据:

​ 现在找到了网关,现在有两个ip,一个是目标ip,一个是网关ip,怎么携带数据呢?

在网络层携带目标ip,然后再封装一层链路层信息,携带了下一跳的MAC地址:

在这里插入图片描述

#####MAC地址:

扩展唯一标识符,每一台联网设备都有自己的MAC地址,记录在网卡中.

arp协议:

地址解析协议,通过已知的下一跳的ip地址,来获取MAC地址成为ARP协议:

网关首先查看自身的[APR缓存表中是否有]目标ip地址的MAC值,

  • 如果没有,则会构建广播[ARP广播请求]:

我是192.168.1.5,我的硬件地址是"FF.FF.FF.FF.FF.FE".请问IP地址为192.168.1.1的MAC地址是什么?

  • 目标主机接受到之后:

首先将发过来的ip地址和MAC地址,记录到自己的arp缓存表中,然后将自己的MAC地址值发送回去.

​ 这样,主机A就知道了主机B的MAC地址,它就可以向主机B发送信息了。同时A和B还同时都更新了自己的ARP缓存表.

apr协议的使用范围:

1,在同一局域网内;

2,在一段链路中使用.

arp缓存表

arp -a

在这里插入图片描述

发起的arp请求:

在这里插入图片描述

联络层数据包跳转过程:

将发过来的ip地址和MAC地址,记录到自己的arp缓存表中,然后将自己的MAC地址值发送回去.

​ 这样,主机A就知道了主机B的MAC地址,它就可以向主机B发送信息了。同时A和B还同时都更新了自己的ARP缓存表.

apr协议的使用范围:

1,在同一局域网内;

2,在一段链路中使用.

arp缓存表

arp -a

在这里插入图片描述

发起的arp请求:

在这里插入图片描述

联络层数据包跳转过程:

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值