TCP/IP协议栈

时间:2019-06-11
本文章向大家介绍TCP/IP协议栈,主要包括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