1、OSI网络七层模型
低三层:物理层、数据链路层、网络层:路由选择和流量控制(IP协议)
中间:传输层:端口到端口的数据传输(TCP/UDP协议)
高三层:会话层、表示层、应用层
2、传输控制协议TCP
传输层协议。TCP提供面向连接、可靠、有序、字节流传输服务。应用程序在使用TCP之前,必须先建立TCP连接。
三次握手(建立连接):
客户端(等待确认)-发起请求->服务端(收到请求)
服务端(等待连接)-同意连接->客户端(收到确认)
客户端(请求连接)-建立连接->服务器(建立连接)
四次挥手(释放连接):
客户端(等待确认)-请求关闭->服务端(收到请求,半关闭)
服务端(回复请求)-同意关闭->客户端(等待释放)
服务端(等待确认)-请求确认->客户端(收到确认)
客户端(发起关闭)-确认关闭->服务端(关闭连接)
客户端(等待一会 time_wait:2MSL,默认4分钟,关闭连接)
TCP 连接TIME_WAIT 状态:面试官问:大量的 TIME_WAIT 状态 TCP 连接,对业务有什么影响?怎么处理?
3、用户数据报协议UDP
UDP是Internet传输层协议。提供无连接、不可靠、数据报尽力传输服务。
4、Socket编程
Internet中应用最广泛的网络应用编程接口,实现了3种底层协议接口:
数据报类型套接字SOCK_DGRAM(面向UDP接口)
流式套接字SOCK_STREAM(面向TCP接口)
原始套接字SOCK_RAW(面向网络层协议接口IP、ICMP等)
主要socket API及其调用过程
创建套接字 -- 端点绑定 -- 发送数据 -- 接收数据 -- 释放套接字
Socket API函数定义
listen()、accept()函数只能用于服务器端;
connect()函数只能用于客户端;
socket()、bind()、send()、recv()、sendto()、recvfrom()、close()