TCP/IP协议栈
Transmission Control Protocol / Internat Protocol
TCP/IP是一个协议栈,包含了TCP IP UDP ICMP RIP Telnet ftp smtp ARP等一系列协议
发源于美国国防部DOD在69年启用的因特网前身ARPA项目,83年1月1日取代了旧的NCP网络控制协议,成为今天因特网和局域网的事实标准。
共定义了四层,和OSI七层模型有对应关系,如下图
常见应用层协议 http 80 https 443 ftp 21 tftp 69 nfs dns 53 smtp 25 pop3 110 imap 143 telnet 23 ssh22 snmp 161
mysql 3306 oracle 1521 SQL server 1433
NFS端口号不固定
linux中查看协议命令 cat /etc/service
windows中先用tasklist查询进程的pid,再用netstat根据PID来查询对应的端口号
TCP协议的特性:
工作在传输层
面向连接的协议
全双工协议
半关闭
错误检查
将数据打包成段,排序
确认机制
数据恢复,重传
流量控制,滑动窗口
拥塞控制,慢启动和拥塞避免算法
端口号最大是2的16次方,也就是2^16=65536,其中0到1023分配给系统端口或者特权端口(仅系统管理员可用), 1024到49151是用户端口或者注册端口,并不严格。49152到65536是动态端口或者私有端口,客户端程序随机使用,其范围的定义linux中在/proc/sys/net/ipv4/ip_local_port_range
windows下面可以用netstat -no可以显示当前的进程和对应的端口号
SYN FIN ACK是重点需要掌握的3个FLAGS字段。
SYN表示建立连接,用来同步序号。SYN=1表示这是一个请求建立连接或者同意建立连接的报文。只有在前两次握手时SYN才为1,带SYN标志的TCP报文段称为同步报文段。当SYN=1,ACK=0时,表示这是一个请求建立连接的报文段;当SYN=1,ACK=1时,表示对方同意建立连接。
FIN表示通知对方本端要关闭连接了,标记数据是否发送完毕。如果FIN=1,即告诉对方:数据发送完毕,你可以关闭连接了。带FIN标志的报文段被称为结束报文段。
ACK表示响应,表示前面的确认号字段是否有效。ACK=1,表示有效;只有当ACK=1时,前面的确认号字段才有效。TCP规定,建立连接后,ACK必须为1,带ACK标志的TCP报文段称为确认报文段。
TCP三次握手,双向确认后才能可靠
Linux中,如果想查询哪些服务正在监听远程网络的访问或者说本地网络哪些端口正在监听,可以使用命令ss -ntul
原文地址:https://www.cnblogs.com/huangfuzheng/p/11004832.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【python-leetcode03-滑动窗口法】无重复字符的最大子串
- 编程语言中的值数据类型和引用数据类型之间的区别
- c++之结构体
- c++结构体实例之按结构体中指定变量进行排序
- springboot消息之整合rabbitmq
- springboot消息之@RabbitListener和@EnableRabbit
- c++实例之通讯录管理系统之显示菜单和退出功能(一)
- c++实例之通讯录管理系统之添加联系人功能(二)
- c++实例之通讯录管理系统之显示联系人功能(三)
- c++实例之通讯录管理系统之删除联系人功能(四)
- springboot检索之Elasticsearch简介
- c++实例之通讯录管理系统之查找联系人功能(五)
- 【python-leetcode424-滑动窗口法】替换后的最长重复字符
- c++实例之通讯录管理系统之修改联系人功能(六)
- 解决arxiv.org打开pdf缓慢问题