1.握手 说明: 下面涉及 FIN,SYN,ACK之类数据时,都是由TCP服务收发, 涉及 accept, listen 之类api,都是 应用进程 完成. 都统一使用 客户端,服务端描述,请自行分辨. (1)首先描述下3次握手,TCP协议做了什么. 客户端,主动打开,发送自己的序列号SYNj,并期待对方回复ACKj+1 服务端,被动打开,接送自己的序列号SYNk和ACKj+1,并期待对方回复ACKk+1 客户端,接收对方ACK,己方打开完成,接收对方SYN,发送ACKk+1 服务端,接收对方A…
1.引言 TCP 这段看过好几遍,老是记不住,没办法找工作涉及到网络编程这块,各种问 TCP .今天好好整理一下握手和挥手过程.献给跟我一样忙碌,找工作的童鞋,欢迎大神批评指正. 2.TCP 的连接建立 上图画出了 TCP 建立连接的过程.假定主机 A 是 TCP 客户端,B是服务端.最初两端的 TCP 进程都处于 CLOSED 状态.图中在主机下面的是 TCP进程所处的状态.A 是主动打开连接,B 是被动打开连接. 三次握手过程分析: (1)首先A向B发出连接请求报文段,这时首部中的同步位SY…
第二章 TCP/IP 基础知识   TCP/IP  transmission control protocol and ip internet protocol 是互联网众多通信协议中最为著名的.   2.2 TCP/IP 的标准化 2.2.2 TCP/IP 标准化精髓 TCP/IP 协议始终具有很强的实用性. 相比于TCP/IP ,OSI 之所以未能达到普及,主要原因在于未能尽早的制定可行性较强的协议.未能提出应对技术快速更新的协议以及没有能及时进行后期的改良的方案. 2.2.3 TCP/IP…
前言 首先需要明确的是 TCP 是一个可靠传输协议,它的所有特点最终都是为了这个可靠传输服务.在网上看到过很多文章讲 TCP 连接的三次握手和断开连接的四次挥手,但是都太过于理论,看完感觉总是似懂非懂.反复思考过后,觉得我自己还是偏工程型的人,要学习这些理论性的知识,最好的方式还是要通过实际案例来理解,这样才会具象深刻.本文通过 Wireshark 抓包来分析 TCP 三次握手和四次挥手,如果你也对这些理论感觉似懂非懂,那么强烈建议你也结合抓包实践来强化理解这些理论性的知识. 三次握手 TCP…
1.端口号 端口号用于区分使用相同协议的进程. TCP69 与 UDP69 是不同的. 端口号范围 0 - 65535, 其中 0- 1023 是保留端口. 2.套接字对 TCP服务通过套接字对,唯一识别进程. 如上,服务器fork后,两个子进程都 bind 了 12.106.32.254:21,那么TCP服务收到对端的数据包,应该给哪个进程呢? 所以套接字对才是数据收发的唯一表示,两个套接字对,是连接的唯一标识. 3.TCP输出 如上,TCP是带缓存的. (1)应用程序调用 write,数据只…
状态可以用 netstat 验证 加粗线为 数据交换. 可以看出,TCP在 建立连接和 关闭连接,耗费资源, 因为UDP只需要两次数据通信即可. 但UDP没有可靠传输,和流量控制. 上面协商的MSS为,两者最小值,即小于536 注释: MSS时SYN的一个选项,用于告诉对方 它的最大分节大小,即在本次连接中,它愿意接受的最大数据量. 2.TIME_WAIT TIME_WAIT 是主动关闭方,发送最后一个ACK进行的状态. 需要等待 2MSL TIME_WAIT的意义: (1)可靠的实现TCP全双…
1.描述网络是如何工作的     DoD过程/应用层 -- OSI应用.表示和会话层(定义了结点到结点的应用通信协议以及对用户界面规范的控制): DoD主机到主机层 -- OSI传输层(保证了数据包的顺序传送及数据的完整性): DoD因特网层 -- OSI网络层(赋予一个IP地址来完成对主机的寻址,负责数据包在多种网络中的路由): DoD网络接入层 -- OSI数据链路层和物理层(监视数据在主机和网络之间的交换,检查硬件地址并定义数据的物理传输协议). 对应协议(要记): 过程/应用层:Teln…
1.为什么要了解协议 程序员与协议合作,完成应用. 了解协议是为了了解协议完成了什么,提供了什么服务,自己还应该做什么. 2.从协议的角度,套接字是什么 套接字是协议的接口, IP套接字,代表可使用IP协议服务. TCP套接字,代表可使用TCP协议服务. 3.对编程而言,UDP协议应该了解什么 (1)应用的消息被封装到UDP数据报,UDP数据包被封装到IP数据报. (2)UDP不可靠,UDP不保证数据一定到达,按顺序到达,重复到达. (3)UDP只保证到达的数据是正确的(进行了错误校验) (4)…
bin boot conf settings.xml非常重要 这个是maven安装包自带的settings.xml 通常我们会放在习惯路径,C:\Users\admin\.m2\下面 即  用户路径\.m2\ 但是我们也可以放在指定路径下面,指定仓库的文件夹路径,比如: 这里我们把settings.xml指定一个位置D:\maven\settings.xml,然后再指定仓库的位置: 指定 D:\maven下面的maven文件夹为本地仓库localRepository lib ~/.m2 这里的仓…
流程图 全部11种状态 客户端独有的:(1)SYN_SENT (2)FIN_WAIT1 (3)FIN_WAIT2 (4)CLOSING (5)TIME_WAIT 服务器独有的:(1)LISTEN (2)SYN_RCVD (3)CLOSE_WAIT (4)LAST_ACK 共有的:(1)CLOSED (2)ESTABLISHED TCP状态迁移 大家很明白TCP初始化连接三次握手吧:发SYN包,然后返回SYN/ACK包,再发ACK包,连接正式建立.但是这里有点出入,当请求者收到SYS /ACK包后…