UDP是面向数据报的传输层协议,UDP之间的通信以数据报为界限,每次调用send发送数据,不管数据多小,都会产生一个UDP数据报,然后被组装成一个IP数据报,发送出去。每次调用recv接收数据,都只能接收到一个UDP数据报。所以客户端调用了几次send发送UDP数据报,服务器端就要调用几次recv来接收UDP数据报。这和TCP不同,TCP是面向字节流的传输层协议,为了避免IP分配(MTU ...
一图说明MTU和MSSMTU - 最大传输单元 (maximum transmission unit)不同类型的网络大多数对在其中传输的数据帧(Frame)的携带的数据大小都有一个限制,这个限制值就是MTU。以太网(Ethernet)设备的MTU一般是1500字节。注意:MTU是每个网络接口自己设置的,上图可以看到我们和服务器之间的两个路由器的四个网络接口的MTU = 1500。当然路由器可...
安装golangbrew install go更新golangbrew upgrade go查看golang版本go version查看golang的环境变量,可以看到GOROOT(Go SDK目录),GOPATH(工作目录),GOPROXY(可以配置国内的镜像,go get使用)go env下载第三方包go get github.com/hyper-carrot/go_lib/loggin...
以前在面试中,有人问过我,你知道TCP关闭时的TIME_WAIT状态吗?知道TCP三次握手和四次挥手的我,当然说知道。但其实随着问题的深入,我才发现我并不懂TIME_WAIT。三次握手 四次挥手 目的为什么四次挥手的过程中,主机1收到FIN后,不直接进入CLOSED状态,而是进入到TIME_WAIT状态,等待2MSL时间后才进入到CLOSED状态。主要有以下两个目的:考虑这样一个场景,主机1...