TCP通信

OSI七层参考模型与TCP/IP

Linux模拟请求百度

1
2
3
exec 8<> /dev/tcp/www.baidu.com/80		// >与< 分别表示输入输出,此行表示与百度建立tcp连接(三次握手)
echo -e "GET / HTTP/1.0\n" >& 8 // 发送http协议
cat <& 8 // 返回响应内容

TCP/IP 连接过程

a 表示发送端 b 表示接收端

三次握手

  1. a的传输层先发送一个syn包通过a的网络层,链路层,物理层,到B的物理层,链路层,网络层,传输层
  2. b的传输层会发送个syn+ack 包到a的传输层(路径同上)
  3. a的传输层发送一个ack到b 的传输层(连接建立)

传输过程

1.a的传输层 带有ack+data(数据包)给b的传输层
2.b收到后直接返回个 ack包给a,data 交给应用层处理
3.a确认签收消息 单次通信完成

四次挥手

1.a的传输层 带有fin(数据包)给b的传输层
2.b传输层回給a 一个ack传输包(此时还没断开连接)
3.b确认没有正在传输的数据包了 发送一个fin(数据包)给a的传输层
4.a传输层回給b 一个ack传输包
5.a,b 释放连接资源 连接断开

1
netstat -natp			//可以查看客户端与服务端的连接 state LISTEN 监听端口端口 ESTABLISHED 建立连接的端口映射 (永远是服务端监听端口对应客户端的多个端口)

网络传输层丶链路层(arp)

1.内网ip 与子网掩码做与运算 得到下一跳主机ip(192.169.1.103 与掩码255.255.255.0 得到 192.169.1.0)192.169.1.0

1
2
3
routing table			//访问的ip 与每行的genmask做与运算 如果Destination一致则直接丢给当前行交换机将数据包传输给访问ip 否者调到网关进行下一跳
arp -a //查看链路表的mac地址
tcpdump -nn -i eth0 arp or port 80 //抓包命令可以看到3次握手四次挥手过程

最后更新: 2020年02月03日 17:28

原始链接: http://yoursite.com/2020/0203/tcp-ip-communication.html

× 请我吃糖~
打赏二维码