传输层:提供进程地址
tcp:传输控制协议,面向连接的协议;通信前需要建立虚拟链路;结束后拆除链路;主要提供更加可靠的数据流通信协议。
udp:User Datagram Protocol,无连接的报文协议。
0-1023:众所周知,永久的分配给固定的应用使用,特权端口管理员可以使用,22/tcp(ssh), 80/tcp(http), 443/tcp(https)
1024-41951:亦为注册端口,但要求并不是特别严格,分配给程序注册为某应用使用,11211/tcp, 11211/udp (memcached), 3306/tcp(mysql)
41952+:客户端程序随机使用的端口;动态端口,或私有端口;其范围的定义:/proc/sys/net/ipv4/ip_local_port_range
内核去真正标记一个能够跨主机通过网络进行通信的进程时是通过套接字实现的。
Socket:IPC的一种实现,允许位于不同主机(甚至同一主机)上不同进程之间进行通信;数据交换;
SOCK_STREAM:tcp套接字,流式套接字。
SOCK_DGRAM:udp套接字。
SOCK_RAW: 裸套接字,直接调用api地址,通过ip 报文封装应用。
当两个主机直接进行通信时,所谓同层之间有协议,不同层之间,上层利用下层接口的服务,下层接口向上层接口提供服务,化整为零的把一个较大的分解成各个小问题各个解决,最终把他们拼凑起来实现模块化设计。任何一个层次出现问题,都可以把替换或升级,而不用迁一发而动全身。
IP 报文最大不能超过MTU(最大传输单元,通常为1500字节)的大小,LAN 层的封装,包括源目标MAC地址和目标MAC地址。
服务器上预先启动web服务,也就是向内核注册某个端口,客户端需要进行通信时,利用浏览器进程(双方打开一组套接字,服务器端80端口,客户端使用随机的端口)
TCP协议的特性:需要事先建立虚拟链路
建立连接:三次握手
将数据打包成段:每一个段有一个校验和(CRC-32)循环冗余较验算法
确认、重传以及超时:
排序:逻辑序号
流量控制:滑动窗口算法
拥塞控制:慢启动和拥塞避免算法
套接字相关的系统调用:
socket(): 创建一个套接字;
bind():绑定
listen():监听
accept():接收请求
connect():请求连接建立
write():发送
read():接收
send(), recv(), sendto(), recvfrom()
网友评论