1 上图为tcp和udp协议格式

2 tcp有发送和接收缓冲区,每次发送多少字节和读取多少字节,没有固定量,根据mss,tcp自动进行分发报文。但是udp不同,每一个发送操作对应一个读操作,否则会丢包。

3 序号值会被系统初始化为一个随机值isn,那么在该方向上发送的消息的序号值时该tcp报文段数据部分第一个字节相对于整个字节流头部的偏移量加上这个isn值,例如某个tcp报文段的数据是第1025-2048字节,那么其序号值为isn+1025。确认号为序列号+1

4 URG标志位表示紧急指针是否有效。ACK标志位表示确认号是否有效。PSH标志位表示接收端应用程序应立即从TCP缓冲区中读走数据(一般来说,每一次 write,都会将这一次的数据打包成一个或多个 TCP 报文段(如果数据量大于 MSS 的话,就会被打包成多个 TCP 段),并将最后一个 TCP 报文段标记为 PSH)表示一个完整的消息包结束。只要接收方的缓冲区没有满,就会一直等待,直到接收到一个带有PSH标志的报文,read才回返回。RST标志表示要求对方重新建立连接。SYN标志表示请求建立一个连接。FIN标志表示通知对方本端即将关闭。

5 如果A端向B端发送SYN,当时没有收到B端回复,A端会发送6个序号一致的同步报文段,其间隔为1S、2s、4s、8s、16s、32s。指数增长。

7 tcp出现连接时的四次握手状况:

当TCP连接双方几乎同时向对方发送SYN同步报文段请求连接,随后进入到SYN_SEND状态。接到对方的SYN后进入SYN_RCVD状态各自返回一个ACK。双方收到对方的ACK进入ESTABLISHED。同时打开的时候没有服务器和客户端的概念,并且一共会发送4个报文段,而不是正常三次握手中的3个

8 当客户端发送ACK给服务器端后要进入2MSL的TIME_WAIT时间,MSL是报文段最大生存时间,RFC1122中定义这个时间一般为2min。等待这端时间的目的是防止由于网络原因服务器端未收到这个ACK回复,重传了上一个FIN报文段,如果不进入TIME_WAIT状态则服务器端一旦接收不到ACK,就会维持连接,消耗内核资源。所以在实际编程过程中,我们会经常发现多次测试重复绑定socket的时候会出现端口被占用的错误,这就是端口仍处于TIME_WAIT状态不能被使用,可用socket选项SO_REUSEADDR来强制立即使用端口。

9 TCP发送携带RST标志的复位报文段以通知对方关闭连接或重新建立连接。一般有三种情况:1)访问不存在的端口,这点在上面的①中已经说明;2)异常中止连接,当一方向另一方发送复位报文段时,发送端所有排队等待发送的数据皆被丢弃,在编程过程中,可以使用socket选项的SO_LINGER来发送复位报文段以异常终止一个连接;3)处理半打开连接,当通信双方建立连接后,若其中一方网络断线,而另一方此时并不知情,此时断线方网络重连,没有了该连接的信息,即处于了半打开状态,另一方继续向对方发送数据,此时由于对面连接已经被关闭,所以对方会返回一个复位报文段以重新连接。

10 发现网络拥塞的依据:1、传输超时 2、收到两个重复的确认报文段。

转载于:https://www.cnblogs.com/zanyouxin/p/9203842.html

TCP/IP 学习 --- 2相关推荐

  1. TCP/IP学习(30)——L2数据链路层的数据包处理详细流程

    原文地址:TCP/IP学习(30)--L2数据链路层的数据包处理详细流程 作者:GFree_Wind 本文的copyleft归gfree.wind@gmail.com所有,使用GPL发布,可以自由拷贝 ...

  2. 【TCP/IP学习笔记1】 C语言讲解

    TCP/IP学习笔记(一) 一. TCP/IP结构:      TCP/IP是一个四层协议,结构如下:      1.应用层:各种应用程序和协议,如Http.FTP等.      2.传输层:TCP和 ...

  3. TCP/IP学习笔记(一)(转载)

    一.TCP/IP结构:      TCP/IP是一个四层协议,结构如下:      1.应用层:各种应用程序和协议,如Http.FTP等.      2.传输层:TCP和UDP      TCP提供一 ...

  4. TCP / IP学习笔记(9)-dns域名系统

    TCP / IP学习笔记(9)-dns域名系统 前面已经提到了访问一台机器要靠IP地址和MAC地址,其中,MAC地址可以通过ARP协议得到,所以这对用户是透明的,但是IP地址就不行,无论如何用户都需要 ...

  5. TCP/IP学习入门笔记

    近期需要做一个用到UDP的工程,之前的情况是上位机计算出的车速(左右轮速),发送给各个小车(具体实现还不知道,等下去问硬件的同学),现在我们要改成用WIFI通信,大致的想法是:以后电脑和小车都连接好手 ...

  6. TCP/IP学习笔记(3)----IP,ARP,RARP协议

    把这三个协议放到一起学习是因为这三个协议处于同一层(网络层协议),ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP ...

  7. TCP IP学习笔记① 互联网通信过程

    文章目录 一.TCP/IP和OSI模型 二.协议分层 2.1 物理层 2.2 数据链路层 2.2.1 以太网协议 2.2.2 MAC地址 2.2.4 广播 2.3 网际层 2.3.1 IP地址     ...

  8. TCP/IP学习笔记(八)复位报文段

    TCP报文首部中存在一个RST位,如果该位被置1则表示这是个复位报文段.当一个报文段从一端发往一个不存在或者处于异常状态的另一端时,就会以一个复位报文段应答发送端,告知发送端连接出现错误,应当被关闭 ...

  9. TCP/IP学习笔记(五)TCP的保活定时器

    正常情况下,TCP连接的终止需要经历四次挥手阶段,体现在代码上就是某一端主动调用close函数关闭套接字,随后TCP向对端发送FIN位被置为1的报文段标志着连接的结束,同时对端响应应答报文段,并在随后 ...

  10. TCP/IP学习笔记(四)TCP超时重传及拥塞控制

    TCP是可靠的传输层协议,但这并不意味着一端发送的数据一定可以到达另一端,因为传输过程中遇到的情况是不可控的,很有可能就有某些数据发生丢失,所以"可靠"其实并不可靠. 不过毕竟现如 ...

最新文章

  1. 《用Python进行自然语言处理》第 4 章 编写结构化程序
  2. javascript动画系列第一篇——模拟拖拽
  3. django orm级联_django+jquery 实现级联选择菜单
  4. 修改vim中的tab为4个空格
  5. partial 分部类-庞大类的瘦身计划
  6. leaf 叶子(张量)
  7. python----流程控制
  8. Ansible-playbook 学习
  9. SQL server 2012序列号 注册码 z
  10. 18C 也不能避免 SQL 解析的 Bug
  11. linux中的c技术,基于linux下C开发中的几点技术经验总结
  12. 安卓 mysql读取图片路径_android开发之数据库存取图片
  13. 介绍一些房屋抗震的科普知识
  14. visio2013找到密钥以后但是未激活状态
  15. Ubuntu 印象笔记网页剪切插件无法登录问题的一种解决方案
  16. mac抓包工具charles破解版安装及简单使用
  17. bottleneck网络结构
  18. 计算机故障检测与维修论文的绪论,论文--汽车故障的检测与维修
  19. 计算机二级报名时间表天津内容,天津市2018年上半年计算机二级报名通知
  20. ShaderJoy —— 烟花爆炸特效【GLSL】

热门文章

  1. java tcp 编程实例_Java实现基于TCP的通讯程序实例解析
  2. 深度学习tensorflow框架的张量
  3. 一次短信验证码攻击的应急响应
  4. /usr/lib/python2.6/site-packages/pycurl.so: undefined symbol: CRYPTO_set_locking_callback
  5. Lua:给Redis用户的入门指导
  6. 框架复习笔记-Java-案例:牛客网讨论社区
  7. 在控制台中循环录入字符串,输入q时退出。 然后显示一个新的字符(Python)
  8. 关于reduce中遍历2次数据的问题
  9. Nutch+Hadoop集群搭建
  10. python3爬虫初探(八)requests