1.传输层:两台不同主机上的两个进程的通信
2.tcp/ip 应用层 传输层 网络层 数据链路层
应用层发送一个"hello",到传输层以后会变成 tcp “hello”,当到了网络层以后会变成 ip tcp “hello”,到数据链路层以后会变成 帧头 ip tcp “hello” 帧尾
3.tcp和udp的特点
tcp特点:面向连接的、可靠的流式服务
upd特点:无连接的、不可靠的数据报服务
tcp的可靠性是有开销的,tcp为了可靠性付出了一些的代价
4.通过套接字可以进行数据的收发
5.创建套接字需要指定服务类型:tcp SOCK_STREAM udp SOCK_DGREAM
6.Linux中面试唯一可能要写到的代码就是tcp的服务器端和客户端
7.端口号的设置要转化成网络字节序列
端口号设置的时候需要转成网络字节序列(也就是大端字节序列),端口号是应用程序的代号,1-1024是知名端口,我们自己是不能使用的,一般是管理员才能使用,代表着知名服务,比如110,119,80号端口等特殊的服务,他们有特殊的意义,是固定的,一般1024-4096(或者说一直到5000)是保留端口,自己也不能使用,5000以上是临时端口,自己可以使用
8.什么情况下bind()会出现错误?
答案:端口号被占用,那么如何判断端口号是否被占用了呢?在Linux中有命令netstat -natp可以用来查看哪些端口号是已经被占用的了
Proto是协议
Recv-Q是接收缓冲区
Send-Q是发送缓冲区
Local Address是本地IP和端口
Foreign Address是外部IP和端口
State是tcp连接的状态
PID/Program name是进程的PID和进程的名字
9.关于查看哪些端口号被占用的命令netstat
netstat -natp