对于这个问题我想分3点来谈tcp/ip协议,网络接口api,常见问题和处理方法

说到tcp/ip协议就不得不说tcp建立连接的3次握手和断开连接的4次握手以及tcp状态转换图

客户端发送一个syn带初始序号M请求建立连接并且状态由close转换为syn_send,此时客户端为半连接;服务端收到回复一个syn+ack,其中syn初始序号为N,ack确认序号为M+1;并且状态由close转换为syn_received,此时服务端为半连接;客户端收到后回复ack带确认序号为N+1,状态由syn_send转换为established,服务端收到后状态由syn_received转换为established,至此,tcp3次握手完成;假设客户端发起断开连接,客户端发送fin带初始序号J,状态由established转换为fin_wait_1;服务端收到后回复ack带确认序号J+1,状态由established转换为close_wait状态;客户端收到后发送fin带初始序号K,状态由fin_wait_1转换为fin_wait_2状态;服务端收到后回复ack带确认序号K+1,状态由close_wait状态转换为last_ack状态;客户端收到ack后状态由fin_wait_2转换为time_wait状态,并在等待2MSL(2倍的最大报文段生存时间,msl为30秒,1分钟,2分钟)后进入close状态;服务端收到ack后进入close状态,否则重发fin,因为客户端处在time_wait状态,可以继续收到fin并回复ack。实际上建立连接的第二步讲syn和ack合并了,所以是3次握手,否则也是4次;为什么不是2次呢,因为tcp是全双工,允许数据收发,所以要分别发送与接收,关闭时也要关闭发送和接收,发出fin意味着关闭了这端的数据发送。

tcp为什么可以保证到达和有序,udp为什么不行

tcp包头中由序列号,接收数据包讲根据序号列排序保证数据有序到达,tcp由ack和超时机制,可以在没有收到确认ack时重传数据包,保证数据到达,而udp这没有这些特性

ip分片,tcp分段,udp数据报

ip包有最大长度限制,对于从传输层发送的超过mtu的数据包ip协议栈将会分片处理,对于tcp对于应用层发送的数据,tcp是发送数据流,超过了mss则会分为多个tcp包发送,对于udp则是发送数据报,应用成发送和接收都是根据整体报文大小收发,过大则会引起ip层分片,而udp的网络层并不分包处理。

网络接口api,主要讲listen第二个参数,linger,keepalive,shutdown,useaddr,useport

bsd套接字在实现tcp3次握手的时候分为两个队列,未完成3次握手的连接和完成3次握手的连接,listen的第二个参数就是指完成3次握手队列的长度(linux下实现为两个队列的总和),收到一个syn,内核会放入未完成队列等待握手完成,对于完成握手的连接,则从未完成队列移到完成队列,然后应用程序调用accept接受连接则是从完成队列种取出连接。

设置linger选项,将告诉底层,若有数据发送,将延迟套接字关闭,等待数据完成后在关闭套接字。

设置keepalive选项,将使用tcp自带的心跳机制,周期性发送心跳包。

调用shutdown而不是close,发出fin的意义在于完成了这端的数据发送,关闭发送,但是仍然可以接收数据。

设置useaddr与useport选项,将允许使用本地处于2MSL状态的地址和端口

dos攻击与防御方法

什么是前摄器模式,什么是反应器模式

同步,异步,阻塞,非阻塞的概念区分

iocp原理,epoll原理,什么是边缘触发,什么是水平触发

说说boost的asio和ace的两种模式使用

谈谈tcp/ip协议相关推荐

  1. HTTP 协议 - 简单谈谈 TCP / IP (一)

    原文连接 blog TCP / IP 基本概念 世界上几乎所有的 HTTP 协议都是由 TCP / IP 协议来承载的.它是互联网相关的各类协议族的总称(通常所说的规则,就是协议). 从输入的 URL ...

  2. HTTP 协议入门 — (TCP/IP协议族、通信传输流、URI 与 URL 的区别、Cookie 状态管理、HTTP 支持的方法、状态码类别、HTTP 首部字段)

    TCP/IP协议族 在介绍 HTTP 协议之前,我们先对 TCP/IP 协议族有个大概的了解,TCP/IP 协议从上到下主要分为应用层.传输层.网络层和数据链路层,各层的主要功能如下表所示: 协议层 ...

  3. TCP/IP协议三次握手与四次握手流程解析

    原文链接地址:http://www.2cto.com/net/201310/251896.html TCP/IP协议三次握手与四次握手流程解析 TCP/IP协议的详细信息参看<TCP/IP协议详 ...

  4. ip设置 kali 重置_在 Windows 系统中如何重置 TCP/IP 协议堆栈修复网络连接问题

    Internet 在 TCP/IP 协议上工作,如果 TCP/IP 协议堆栈在 Windows 或任何其他操作系统(例如 Linux 或 MacOS)中无法正常工作,则您的 Internet 连接会出 ...

  5. TCP/IP 协议理解

    TCP/IP 协议(Transmission Control Protocol / internet Protocol),因特网互联协议,又名网络通讯协议.通俗而言:TCP负责发现传输的问题,一有问题 ...

  6. 网络协议OSI、TCP/IP协议、Socket套接字和第三方AsyncSock的使用等解析

    一.网络协议定义 1.OSI参考模型:全称(Open System Interconnection), 开放式系统互联参考模型.是一个逻辑上的定义,一个规范,它把网络协议从逻辑上分为七层,只要目的是为 ...

  7. Python 14.1 TCP/IP协议简介

    TCP/IP协议简介 虽然大家对现在的互联网很熟悉,但是计算机网络比互联网出现的早得多. 为了把全世界不同的计算机都连起来,就必须规定一套全球通用的协议,为了实现互联网这个目标,互联网协议簇(Inte ...

  8. TCP/IP协议分析

    一;前言 学习过TCP/IP协议的人多有一种感觉,这东西太抽象了,没有什么数据实例,看完不久就忘了.本文将介绍一种直观的学习方法,利用协议分析工具学习TCP/IP,在学习的过程中能直观的看到数据的具体 ...

  9. Linux内核网络栈1.2.13-有关tcp/ip协议的基础入门

    参考资料 <<linux内核网络栈源代码情景分析>> Linux内核网络栈的基础内容 主要分析tcp/ip相关的基本构成,概述了socket的系统调用进入内核的一个流程,并了解 ...

最新文章

  1. 使用Newtonsoft.Json
  2. Vue @import ‘~@/css/reset.css’;报错,解决方案
  3. prototype.js 1.4版开发者手册
  4. 源码解读 Spring Boot Profiles
  5. 实训项目1-熟练使用VMware安装Windows server 2012
  6. 未来计算机将具有图像识别 定理证明,[单选] 低温计与高温计所测温度的分界线为()。...
  7. java 统计单词个数和标点符号
  8. python-格化输出format方法
  9. Kotlin入门(18)利用单例对象获取时间
  10. 微软CEO:别被Google的TPU诱惑,Kinect“复活” | Build 2018
  11. 多学一点(十二)——使用extundelete恢复Linux下误删除文件
  12. 【hadoop】19.MapReduce-手机流量统计
  13. ISO9000和CMM
  14. 对vue的 v-for 循环中添加属性的方法的研究
  15. 力扣LCP3机器人大冒险
  16. spark RDD算子大全
  17. 在web-actix框架上实现上传文件
  18. 安卓10不支持qmc解码_魅族Flyme八周年献礼 10款机型支持升级安卓10内测版
  19. 数字信号处理之信号的抽取和内插
  20. 告白墙php搭建教程,ThinkPHP内核 校园表白墙源码 校园恋爱微信表白墙V源码下载 含详细说明...

热门文章

  1. HTML学习01之初识HTML
  2. 利用SIFT和RANSAC算法(openCV框架)实现物体的检测与定位,并求出变换矩阵(findFundamentalMat和findHomography的比较)
  3. 【opencv】13.摄像头焦距和视场角
  4. Linux(Ubuntu14.04)下安装Anaconda和Spyder
  5. 机器学习系列(2)_从初等数学视角解读逻辑回归
  6. Caffe学习系列(2):数据层及参数
  7. Java并发:volatile内存可见性和指令重排
  8. java线程实现方式
  9. Spring Boot 之路(一):一个简单的Spring Boot应用
  10. 如何在Java中选择Map/List/Set