转载自   关于TCP/IP必须知道的几个基础问题

描述一下TCP三次握手的过程

接下来我们根据下面这幅图来解释一下TCP三次握手。p.s: 每个箭头代表一次握手。

第一次握手

client(客户端)发送一个SYN(seq=x)包给server(服务器),然后“期待”server的ACK回复。p.s: seq为sequence(序列)的缩写,ACK为acknowledge(通知)的缩写。

第二次握手

  1. server(服务器)接收到SYN(seq=x)包后就返回一个ACK(ack=x+1)包,意思是告诉client(客户端):我已经成功接收到你的SYN包。

  2. 并且自己也发送一个SYN(seq=y)包,然后”期待“client(客户端)的ACK回复。

第三次握手

  1. client(客户端)接收到server(服务器)发回的ACK(ack=x+1)包后,然后就把自己的状态设置为ESTABLISHED(已建立连接)。

  2. 然后根据server(服务端)发来的SYN(seq=y)包,返回给”期待"中的server一个ACK(ack=y+1)包。期待中的server收到ACK回复,也把自己的状态设置为ESTABLISHED(已建立连接)。到此TCP三次握手完成,client与server可以正常进行通信了。

分析一下TCP四次挥手的整个过程

以上面这张图为例,我们来分析一下TCP四次挥手的过程。

第一次挥手

client(客户端)发送一个FIN(seq=x+2&&ack=y+1)包,此时client进入FIN_WAIT_1状态,这表明client已经没有数据要发送了。

第二次挥手

server(服务器)收到了client(客户端)发来的FIN(seq=x+2&&ack=y+1)包后,向client(客户端)发回一个ACK(ack=x+3)包,此时client进入FIN_WAIT_2状态,这表明server已经"同意"client的挥手请求。

第三次挥手

server(服务器)向client(客户端)发送FIN(seq=y+1)包,请求关闭连接,同时server进入LAST_ACK状态。

第四次挥手

client(客户端)收到server(服务器)发送的FIN(seq=y+1)包。然后向server发送ACK(ack=y+2)包,此时client进入TIME_WAIT状态。server收到client的ACK(ack=y+2)包以后,正式关闭连接;client等待一段时间还没有得到回复后判断server(服务器)已正常关闭,于是将自己的连接也正式关闭。

关于TCP滑窗/阻塞处理等问题,以后我会继续在这篇文章下面补充。

谈一下TCP/UDP的区别和优缺点

  1. TCP协议是可靠的而且面向连接,它可以保证信息到达的顺序,UDP和IP协议都是不可靠的协议。

  2. TCP面向字节流,UDP面向报文。

  3. TCP数据传输慢,UDP数据传输快成本低,早期的QQ就是采用的UDP。

说一下计算机之间通信的原理

计算机之间是通过ip和port(端口)来进行通信的,每一台计算都具有一个独立ip地址(在浏览器里面输入ip.cn就可以查看你独有的公网ip地址),和65535个port(端口)。计算机每一个通过网络通信的程序都占有一个独立的port,通过ip我们能确定要访问的计算机,而port(端口)帮助我们要和计算机上的哪一个程序通信。

p.s: 在linux/mac上我们可以通过netstat命令查看本机上哪些端口被占用了。比如在我的计算机上,MySQL占用了3306,Tomcat占用了8080,Nginx占用了80,DNS服务器占用了53,Shadowsocks占用了1080,Privoxy占用了8118。

谈一谈ip地址的分类

关于arp, ip header, tcp header, routing table等问题,以后我会继续在这篇文章下面补充。

说一说常见的服务以及它们对应的默认端口

TCP/UDP端口列表大全详见:

https://zh.wikipedia.org/zh-hans/TCP/UDP%E7%AB%AF%E5%8F%A3%E5%88%97%E8%A1%A8。

描述一下在浏览器中输入url后的整个响应过程

下面我们以我们在浏览器中输入segmentfault.com为例子来讲解。

  1. 查找域名(segmentfault.com)对应的IP地址。在linux/mac下可以通过dig命令来查询。

  2. 浏览器根据查询到的IP地址向segmentfault服务器的80端口发送一个HTTP请求(request)

  3. 后台PHP接收到请求(request)后,发回一个网页。

  4. 浏览器收到回复后,解析返回的网页。

上面只是简要的描述,如果要详细展开的话在实在太大了。面试过程中,应该详细描述DNS解析域名的过程,对于浏览器发送的request和response的整个流程可以结合TCP/IP四层模型和OSI七层模型来展开,而对于服务器是如何处理请求的,可以根据网站采用的后台框架详细展开描述。

介绍一下TCP/IP四层模型和OSI七层模型

关于TCP/IP必须知道的几个基础问题相关推荐

  1. TCP/IP协议(一)网络基础知识

    参考书籍为<图解tcp/ip>-第五版.这篇随笔,主要内容还是TCP/IP所必备的基础知识,包括计算机与网络发展的历史及标准化过程(简述).OSI参考模型.网络概念的本质.网络构建的设备等 ...

  2. 《图解TCP/IP》——第一章 网络通讯基础

  3. TCP/IP 协议簇 端口 三次握手 四次挥手 11种状态集

    第1章 概念介绍 1.1 VLAN 1.1.1 什么是VLAN VLAN(Virtual LAN),翻译成中文是"虚拟局域网".LAN可以是由少数几台家用计算机构成的网络,也可以是 ...

  4. 网络基础知识-TCP/IP协议各层详解

    TCP/IP简介 虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Micro ...

  5. 在哪里查看计算机配置的网络协议簇,tcp/ip协议簇

    TCP/IP协议簇是Internet的基础,也是当今最流行的组网形式.TCP/IP是一组协议的代名词,包括许多别的协议,组成了TCP/IP协议簇.其中比较重要的有SLIP协议.PPP协议.IP协议.I ...

  6. 从零开始学网络|搞懂OSI参考模型和TCP/IP分层模型,看这篇文章就够了

    来源 | 网络工程师笔记 前言 今天和大家一起谈谈"网络",之前写的文章可能不太通俗易懂,有人就问我可不可以写些比较容易理解的文章,我想了想那就从头说起吧! 那么什么是网络呢? 百 ...

  7. 使用分层网络模型的两个优点是什么_从零开始学网络|搞懂OSI参考模型和TCP/IP分层模型,看这篇文章就够了...

    从零开始学网络|搞懂OSI参考模型和TCP/IP分层模型,看这篇文章就够了​mp.weixin.qq.com 前言 今天和大家一起谈谈"网络",之前写的文章可能不太通俗易懂,有人就 ...

  8. TCP/IP网络初识

    TCP/IP网络初识 TCP/IP网络 测试实验环境(基础知识) 实验一,查看网卡(NIC)的MAC地址 实验 二:查看计算机的 IP 地址 实验三:DHCP服务器的作用 实验四:路由器 实验五:查看 ...

  9. TCP/IP协议分层模型详解

    文章目录 不同分类模型对应关系 不同人员关注的模型不一样 每层的简述 物理层 数据链路层 网络层 传输层 会话层 表示层 应用层 数据包传输过程 数据包传输调用关系 数据包发送 数据包接收 各层协议 ...

最新文章

  1. ftl数据类型转换以及list遍历的使用
  2. spring-基于注解的aop开发(快速入门)
  3. java读写html文件时出现中文乱码问题的解决方法
  4. 做能及之事,过平淡的日子,烦事多忘,好事多为
  5. 没有共享存储和仲裁盘的SQL Server 2012HADR故障手动切换TSQL
  6. 大数据学习笔记08:Java程序访问HDFS
  7. c语言求e近似值精度在10e6,中石油2013秋季学期《C语言》补考在线适用于2014年4月...
  8. 算法导论 思考题1-1
  9. c语言第八周上机作业答案,C语言第五次上机作业参考答案
  10. java数组求和函数_令人头痛的表格函数,今天送你11个常用技巧,一次学会受用一生...
  11. 对排名前3000位博主进行数据分析
  12. PHP spl_autoload_register()函数的一些见解
  13. ElementUI:el-container实现高度占满
  14. 视频教程-AJAX+JSON完成实时验证码检测+输入补齐-Java
  15. 阿拉伯数字转换大写例如:120转一百二十
  16. 计算机常用术语缩写及英文
  17. 2017机器人与自动化领域SCI期刊最新影响因子
  18. 域内计算机桌面背景怎么改,如何将域内用户设置的各种桌面背景都去掉? | 学步园...
  19. 【GDKOI2013】琪露诺的完美算法课
  20. ios 模拟器沙盒_ios 模拟器沙盒的位置 | 学步园

热门文章

  1. [Java基础]反射案列
  2. [Java基础]反射获取成员方法并使用
  3. Ice_cream's world I HDU - 2120(并查集判环)
  4. 丁可以组什么词_有哪些量词可以用来描述生意经?
  5. 登录系统_执照管理系统登录与执照转换操作指南
  6. nvcc找不到的问题(Ubuntu16.04 CUDA 8.0)
  7. P4449 于神之怒加强版
  8. 2018 ICPC Asia Jakarta Regional Contest J. Future Generation 状压dp
  9. 2021牛客暑期多校训练营6 Hopping Rabbit 扫描线 + 矩形 + 细节
  10. Codeforces Round #595 (Div. 3) F. Maximum Weight Subset 树形dp