本文章目录结构出自于《王道计算机考研 计算机网络_哔哩哔哩_bilibili》
04 传输层
在网上看到其他人做了相关笔记,就不再多余写了,直接参考着学习吧。
TCP三次握手建立连接,四次挥手释放连接。
端口号(port)
端口号(port)是传输层协议的内容。
端口号是一个2字节、16比特位的整数。
端口号用来标识一个进程,告诉操作系统当前数据要交给哪一个进程来处理。
IP地址 + 端口号能够唯一标识网络上的某一台主机的某一个进程。
一个端口号只能被一个进程占用。
任何的网络服务或网络客户端,如果要进行正常的数据通信,必须要使用端口号来唯一标识自己。一个进程可以与一个端口号绑定,再加上主机IP地址该端口号就在网络层面上唯一标识一台主机上的唯一一个进程。
这种IP+port标识的方案叫做socket通信。
PID vs PORT
一台机器上会存在大量的进程,为了区分所有的进程,设计了PID来加以区分(系统的概念);但是只有部分进程需要进行网络数据请求,所以用port来标识这些需要进行网络数据请求的进程(网络的概念)。
这类似于身份证号可以唯一标识每一个人,但是在学校里又用学号来唯一标识每一个人。身份证号可以看做PID,学号可以看做port,它们之间并不冲突,都是在各自场景下最合适的管理方案。
注意,端口是传输层才有的概念。
传输层用一个 16 位端口号来标志一个端口。端口号只具有本地意义,它只是为了标志本计算机应用层中的各个进程在和传输层交互时的层间接口。在互联网的不同计算机中,相同的端口号是没有关联的。
TCP长连接和短连接-深入浅出(还在总说http长连接吗)_tcp长短连接-CSDN博客
UDP注意点
应用层给UDP多长的报文,UDP就会照样发送一整个完整的报文给网络层;
因此当报文长度过大时,网络层就需要对其进行分片,又因为接下来要传给链路层有MTU的限制,降低了网络层的效率。
TCP注意点
面向连接:使用TCP前必须先建立连接,传送数据完毕后再释放连接;虚连接表示表面上看上去是两个进程之间直接通信,但实际物理线路上需要从上而下封装再从下而上解封装。
每一个TCP连接只有两个端点,也就是每一个TCP连接都是点对点、一对一的。所以TCP协议无法广播、多播。
TCP提供可靠交付的服务,不丢不重,按序到达。
TCP提供全双工通信。两方可以同时发数据也可以同时接收数据,所以TCP连接的两端都会设置发送缓存和接收缓存。
TCP面向字节流:流是流入进程或从进程中流出的字节序列,虽然应用进程和TCP的交互是一次发送一个数据块,但是TCP会把交下来的数据仅仅看成一连串的无结构字节流。
TCP协议报文
TCP协议详解
TCP协议详解 - 知乎 (zhihu.com)
TCP 实战抓包分析
TCP 实战抓包分析_tcp抓包分析-CSDN博客
TCP协议:报文基础+三次握手+四次挥手
TCP协议:报文基础+三次握手+四次挥手-腾讯云开发者社区-腾讯云 (tencent.com)
TCP/IP协议(2): 以太网(IEEE 802.3) 协议 —— 构成有线局域网的基本协议-CSDN博客
TCP/IP协议详解 - 知乎 (zhihu.com)
UDP协议
参考:
UDP协议详解 - 知乎 (zhihu.com)
网络-UDP协议详解(代码、实战)_udp data[9] != 0x11-CSDN博客