传输层干的那些事儿【随笔】

tcp/udp–传输层协议

角色:socket:ip+端口+协议(tcp/udp)

linux万物皆文件,输入一下命令进行理解
netstat -natp --》tcp、接收队列、发送队列、源和目的[ip:端口]的服务的信息–》socket套接字信息
tcpdump -nn -i eth0 port 80 抓端口为80的包
tcpdump -nn -i eth0 抓包 、、接口名不一定是eth0,敲入ifconfig查看
exec 8<> /dev/tcp/www.baidu.com/80
一切皆文件,创立连接,连接也是文件,即’80‘文件就是连接
我们对该文件的输入输出,即socket的接收和发送
8自定义连接名称,<>表示输入和输出,连接发送接收的信息,即对上面路径的文件进行输入输出
想想java对socket的inputstream和outputstream
exec 8>& - 关闭连接
echo -e “GET / HTTP/1.0\n” >& 8 发送GET请求行格式,服务端也会响应相应的符合http协议的格式的数据,我们只在应用层发送了该http协议的数据包,在发送之前先建立连接–》三次握手:是由内核中的传输层的根据tcp协议发出的
cat <& 8 打印连接socket中的接收队列中的信息

tcp面向连接的、可靠的传输控制协议
tcp连接三次握手、超时自动断开连接
Flags [S]
Flags [S.]
Flags [.]
tcp连接四次挥手,需要两端都主动发送一个表示断开连接的数据包,否则有可能,有一端觉得需要断开了,另一端则表示还需要再连接一段时间,然后两端接收到对方的断开连接的数据包,返回一个ack数据包
A->B:Flags[F]
B->A:Flags[F.]
B->A:Flags[F]
A->B:Flags[.]

’S‘表示SYN请求连接
’.‘表示ack确认收到
’F‘表示FIN请求释放连接
’R‘错误连接
’P‘PUSH推送,不缓存:赶紧的,别存,给你的赶紧给我处理

连接是双方资源的开辟,建立连接其实就是建立socket

HTTP/1.1 有了keep-alive长连接

建立连接成功后,双方会开辟队列资源:发送队列,接收队列
我们通过ip:端口定位对方该队列资源,在通过匹配的协议解析数据
四元组:源ip:源port、目的ip:目的端口 --》具备唯一性
五元组:源ip:源port、目的ip:目的端口 协议
端口:0~65535
数据包:源ip:源port、目的ip:目的端口 协议 + data

传输控制层socket通信过程
1、由内核搞个三次握手,建立连接socket,开启队列资源
2、应用层层面上:数据包先被放在socekt发送队列中
3、由内核即传输层及以下负责将发送队列中的数据包发送至对方主机
4、对方接收到数据包,一层一层解析,根据四元组将数据放置在相应的接收队列中
5、对方应用层引用该队列,将该数据从内核中复制到用户空间
6、四次挥手关闭连接,销毁队列资源

应用层
内核:传输层、网络层、链路层、物理层

IO模型
当应用引用socket队列中时,发现接收队列queue中没有数据,若阻塞则为BIO
当应用引用socket队列中时,发现接收队列queue中没有数据,若不阻塞则为NIO

传输层:只能制造数据包和解析数据包,但怎么将包发送给对方主机不是这个层干的事

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值