duzhuo's-blog

学无止境

TCP 的三次握手和挥手

[TOC]

特性

  • TCP 提供一种面向连接的、可靠的字节流服务。
  • 在一个 TCP 连接中,仅有两方进行彼此通信,广播和多播不能用于 TCP。
  • TCP 使用校验和,确认和重传机制来保证可靠传输。
  • TCP 给数据分节进行排序,并使用累积确认保证数据的顺序不变和非重复。
  • TCP 使用滑动窗口机制来实现流量控制,通过动态改变窗口的大小进行拥塞控制。

注意:TCP 并不能保证数据一定会被对方接收到,因为这是不可能的。TCP 能够做到的是,如果有可能,就把数据尽可能递送到接收方,否则就(通过放弃重传并且中断连接这一手段)通知用户。因此准确说 TCP 也不是 100% 可靠的协议,它所能提供的是数据的可靠递送或故障的可靠通知

三次握手

三次握手(Three-way Handshake),是指建立一个 TCP 连接时,需要客户端和服务器总共发送 3 个包。

三次握手的目的是连接服务器指定端口,建立 TCP 连接,并同步连接双方的序列号和确认号,交换 TCP 窗口大小信息。在 socket 编程中,客户端执行 connect() 时。将触发三次握手。

第一次握手(SYN_SEND)

阅读全文 »

更新日志

  • update hexo-theme-next 7.8.0 → 8.12.3
  • add hexo-next-twikoo

hexo-tag-mmedia test

阅读全文 »

dota2反高台眼

常规的

直接插真眼

把鸡拉上高台

英雄技能的

VS

宙斯

阅读全文 »

定时任务 - crontab

环境:CentOS

通过 crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script 脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作。

crond 服务

Linux 通过 crond 服务来支持 crontab。

检查 crond 服务

使用 systemctl list-unit-files 命令确认 crond 服务是否已安装。

1
2
$ systemctl list-unit-files | grep crond
crond.service enabled

如果为 enabled,表示服务正运行。

crond 服务命令

阅读全文 »

防火墙 - Firewalld

一、firewalld 服务命令

1
2
3
4
5
6
7
systemctl enable firewalld.service  # 开启服务(开机自动启动服务)
systemctl disable firewalld.service # 关闭服务(开机不会自动启动服务)
systemctl start firewalld.service # 启动服务
systemctl stop firewalld.service # 停止服务
systemctl restart firewalld.service # 重启服务
systemctl reload firewalld.service # 重新载入配置
systemctl status firewalld.service # 查看服务状态

二、firewall-cmd 命令

firewall-cmd 命令用于配置防火墙。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
firewall-cmd --version                    # 查看版本
firewall-cmd --help # 查看帮助
firewall-cmd --state # 显示状态
firewall-cmd --reload # 更新防火墙规则
firewall-cmd --get-active-zones # 查看区域信息
firewall-cmd --get-zone-of-interface=eth0 # 查看指定接口所属区域
firewall-cmd --panic-on # 拒绝所有包
firewall-cmd --panic-off # 取消拒绝状态
firewall-cmd --query-panic # 查看是否拒绝

firewall-cmd --zone=public --list-ports # 查看所有打开的端口
firewall-cmd --zone=public --query-port=80/tcp # 查看是否有开放的 80 TCP 端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent # 添加开放端口(--permanent永久生效,没有此参数重启后失效)
firewall-cmd --zone=public --remove-port=80/tcp --permanent # 永久删除开放的 80 TCP 端口

参考资料

Iptables 应用

iptables 是一个配置 Linux 内核 防火墙 的命令行工具,是 netfilter 项目的一部分。 可以直接配置,也可以通过许多前端和图形界面配置。

iptables 也经常代指该内核级防火墙。iptables 用于 ipv4ip6tables 用于 ipv6

nftables 已经包含在 Linux kernel 3.13 中,以后会取代 iptables 成为主要的 Linux 防火墙工具。

环境:CentOS7

1. 简介

iptables 可以检测、修改、转发、重定向和丢弃 IPv4 数据包

过滤 IPv4 数据包的代码已经内置于内核中,并且按照不同的目的被组织成 的集合。 由一组预先定义的 组成,包含遍历顺序规则。每一条规则包含一个谓词的潜在匹配和相应的动作(称为 目标),如果谓词为真,该动作会被执行。也就是说条件匹配。

2. 安装 iptables

(1)禁用 firewalld

CentOS 7 上默认安装了 firewalld 作为防火墙,使用 iptables 建议关闭并禁用 firewalld。

1
2
systemctl stop firewalld
systemctl disable firewalld

(2)安装 iptables

阅读全文 »

Linux 文件目录管理

关键词:cd, ls, pwd, mkdir, rmdir, tree, touch, ln, rename, stat, file, chmod, chown, locate, find, cp, scp, mv, rm

1. Linux 文件目录工作机制

1.1. Linux 目录结构

linux 目录结构是树形结构,其根目录是 / 。一张思维导图说明各个目录的作用:

img

1.2. Linux 文件属性

Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
在 Linux 中我们可以使用 ll 或者 ls –l 命令来显示一个文件的属性以及文件所属的用户和组,如:

1
2
3
4
$ ls -l
total 64
dr-xr-xr-x 2 root root 4096 Dec 14 2012 bin
dr-xr-xr-x 4 root root 4096 Apr 19 2012 boot

实例中,bin 文件的第一个属性用 d 表示。d 在 Linux 中代表该文件是一个目录文件。
在 Linux 中第一个字符代表这个文件是目录、文件或链接文件等等。

阅读全文 »
0%