设计思想

把一个复杂的事物进行分层划分,使得每个部分变得相对简单

分层模型

OSI分为7层模型   tcp/ip分为四层模型

应用层(Application)
传输层(Transport)
网络层(Internet)
网络访问层(Network Access)

TCP特性

1.工作在传输层

2.面向连接协议

在通讯的过程中有一个协商的过程,需要确保两者之间有一个稳定的,可靠的连接状态.

3.全双工的协议

可以同时双向发送数据

4.半关闭

关闭是单方向的   一方关闭连接只表示关闭方不再发送数据,但不代表不接收对方的数据包.

5.错误检查

6.将数据打包成段,排序

7.确认机制

8.数据恢复,重传

9.流量控制,滑动窗口

10.拥塞控制,慢启动和拥塞避免算法

TCP包头

0-15       16个位      2个字节             表示源端口            2^16  = 65536个端口号

16-31     16个位      2个字节             表示目标端口

32位                       4个字节             表示当前本机发送数据包的编号

32位                       4个字节             表示确认号  标识对方主机发送的数据包的编号  告诉对方主机下次需要发送数据包的编号

4位                         数据偏移           表示tcp包的头部有多长

前面固定有20个字节的长度  +  不固定长度的选项长度

三个重点标记位: 实现TCP可靠传输的关键

ACK      确认接收标志

SYN     同步请求标志

客户端向服务端发送第一个连接TCP数据包的时候会把SYN变成1

服务端响应客户端发送的连接第一个TCP包头中的SYN也等于1

FIN    结束连接标志

使用tcp发送数据之前,必须先通过三次握手 然后才能进行数据的发送和接收

TCP三次握手

第一次握手:    客户端给服务端发送第一个同步消息把SYN设为1

第二次握手:    服务端给客户端发送回应的消息把SYN设为1  ACK设为1         表示服务端能正常接收客户端的数据包

第三次握手:    客户端回应服务端消息把ACK设为1                                          表示客户端能正常接收服务端的数据包

1.客户端 SYN           2.服务端 SYN  ACK       3.客户端  ACK

TCP四次挥手

1.建立连接一般是由客户端首先向服务器端发起请求的,服务器端只进行监听.

2.但是断开连接的分手请求可以是任意方(可以是客户端也可以是服务端)来首先发起的,谁先把数据传输完成,谁就可以发送断开连接请求的数据包

3.首先发送FIN=1的一方 表示自己不再会向对方发送任何数据,但是还会接收对方发送过来的数据 (半关闭的特性)

4. 2MSL时间表示是消息的最大生存期   1个MSL表示两个数据包正常发送的时间

5.首先提出断开连接方最后需要等待2MSL的时间是因为理论上对方会先把还没发完的数据先发给自己最后才会发送FIN=1的数据包,但是

每个数据包在传递的过程中选择的路径是不一样的,可能会出现数据包先发后到的情况.

这段时间是用来接收可能在FIN=1包到达后其它还没有到达本机的数据包.

6.A FIN     B ACK    B FIN      A  ACK

TCP的SYN(同步攻击)

当客户端向服务端首先发起一个SYN的同步消息后,服务器会立刻向客户端返回ACK消息同时等待客户端返回ACK消息.

在服务器等待客户端ACK消息的这段时间,服务器需要消耗一定的内存空间来存储当前的连接信息.此时如果客户端是一些

大量不存在的主机,那么服务器迟迟得不到客户端ACK响应导致内存无法释放这些资源最终把服务器的内存空间消耗干净.

TCP确认

Winodow Size 的值   表示TCP每次可以发送的数据包的个数,而不是一个包一个包的发送,提高数据包的发送效率

UDP传输协议

UDP包头
      16bit        2个字节            源端口
      16bit        2个字节            目标端口
      16bit        2个字节            内容长度
      16bit        2个字节            checksum
      data        发送内容

UDP特性

1.工作在传输层

2.提供不可靠的网络访问

3.非面向连接的协议

4.有限的错误检查

5.传输性能高    没有tcp协议的握手机制

6.无数据恢复的特性

IP网络层协议

切片发送大数据包

DOS拒绝服务攻击

通过ping命令不断的向服务器发送大量的大数据包,由于客户端每次向服务器发送一个包服务器就必须要响应一个包.造成占用服务器大量的cpu和网卡资源.

最新文章

  1. 为什么我们拿Fork当收藏用
  2. Composer Player 属性设置
  3. 一个简单的Linq to TreeNode
  4. HDU 2222 Keywords Search(AC自动机入门)
  5. 响应式设计Responsinator工具推荐
  6. struts2拦截器配置;拦截器栈;配置默认拦截器;拦截方法的拦截器MethodFilterInterceptor;完成登录验证
  7. linux 内核和应用程序区别
  8. 【c++】中文设置
  9. jQuery实例属性和方法
  10. jersey 过滤器
  11. 关于ImageView加载出现OOM问题
  12. 算法设计与分析——多边形游戏(DP)
  13. android application简要类(一)
  14. 流畅的python学习笔记:第二章
  15. 2_ROS学习
  16. accept 文件描述符用尽处理
  17. linux安装vsftpd服务器
  18. nginx错误界面优化和日志管理
  19. js字符串String提取方法比较
  20. python生成linux命令行工具

热门文章

  1. [Tensorflow] Cookbook - Retraining Existing CNNs models - Inception Model
  2. oracle学习笔记1(环境搭建)
  3. [ASP.NET MVC]视图是如何呈现的 (续)
  4. F - Unix ls
  5. I - Crossing River
  6. MFC 应用程序中使用管道代码示意
  7. Tarjan 强连通分量 及 双联通分量(求割点,割边)
  8. CentOS 7.4下使用yum安装MySQL5.7.20 最简单的 (引用)
  9. docker swarm 英文参考资料阅读列表
  10. vim与程序员 vi/vim 的使用