网络协议和网络编程

了解网络协议与编程对我们很有帮助:

七层模型:

模型对应协议:

传输层常用协议:

TCP传输有打包分段控制,有确认是否收到重传机制

视屏或者DSN使用的UDP协议,UDP有个升级版是UDT,带验证的传出,

但是ping命令直接访问的网络层

linux的lvs负载均衡直接访问的网络层

linux的tcpdump直接访问的链路层

端口号:

我了区分一台机器上不同的网络应用,所以有了端口号,我当前发过来的数据是要给那个端口号来接受的

一些程序恶友既定的端口号,别入80或者8080,知名端口号0~1023不能随便用,1024~49151

客户端程序我们操作系统会给动态端口号,一般在49151之上

TCP三次握手建立连接:

客户端将SYN节加一个随机的序列号seq发送给服务端,等待确认,服务器端收到请求后同样也会返回SYN节,返回ACK+节ID,返回ack+seq+1,返回seqID,这样一来一回可以根据数据运算而进一步建立连接,然后客户端将ACK+节ID,ack+seqID+1返回客户端,这样一来一回校验值是否是+的,然后才会建立连接

TCP三次握手的漏洞:

客户端SYN时候带上,假的IP源信息,然后服务端建立了大量的半连接队列,一般队列大小的值是10左右,超过阈值,然后服务端就无法接受任何别的连接了

TCP的四分手:

Fin=1 seq= j 等等final报文

应为是全双工的所以需要四次分手,读的同时可以写,写的同时可以读,同时进行

TCP、IP中的数据包:

层层剥离,上层给下层会加一个首部

TCP套接字对:

客户端与服务端的IP与端口,为套接字对

发送缓冲区与接收缓冲区。输出缓冲区与输入缓冲区,为什么这样缓冲设计呢,一个一个字节传递浪费带宽性能,创建套接字后缓冲区是操作系统自动帮我们生成,缓冲区的大小可以调整

TCP通过消息序号和确认应答来提高可靠性:

每一批数据都有自己的编号,一段时间没有收到对应编号的响应则会重新发送数据,如果重复接受了,接收端会将重复的数据抛弃,且会再次返回响应

TCP滑动窗口:

接受数据的大小由接收方来控制的,TCP内部控制的,交互应答来控制大小

接收方将窗口大小传递给发送方,然后发送方调整发送数据的大小

TCP也有心态机制,但是一般心跳都是用应用层面来解决,TCP默认心跳两个小时才超时,1 2 4 8 16

知道对方挂了,一定是通过心跳报文来解决的

HTTP协议:

http协议概述

无状态,单向性

URI和URL的区别,URI包含了URL

HTTP请求的传输过程:

keep-alive是长连接

HTTP请求报文结构:

HTTP响应报文结构:

UDP协议:

编程中的Socket:

数据操作频繁的用场链接,web用短连接,访问完可以马上释放连接的那种

负载均衡可以坐在HTTP层也可以坐在TCP层

网络编程书籍推荐:

并发编程和Spring源码

:二:

linux的网络IO模型:

00:33:00

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值