소켓 구별 통신 도메인 AF_INET와 AF_UNIX

재판 : HTTP : //blog.csdn.net/sandware/article/details/40923491

1. AF_INET 도메인 소켓 통신 과정

AF_INET 지역 통신 프로세스

일반적인 통신 프로세스 TCP / IP 4 층 모델.

 

보낸 사람,받는 사람 IP에 의존 : 포트는 IP 포트에 따라 최종받는 사람을 찾을 수 있습니다, 인터넷을 통해, 파트너의 IP 포트를 지정, 데이터를 전송, 해당 IP 포트에 바인딩 곧 지역 소켓을 식별하는, 데이터 수신 이 때, IP 포트 패킷 송신기로부터 획득 될 수있다.

시스템 호출 송신 ()을 통해 발신자는 오퍼레이팅 시스템 커널 버퍼 원시 데이터를 전송한다. 각각의 헤더 정보에 대응하는 TCP 계층, ​​IP 계층의 링크 계층을 코딩 커널 버퍼 통하여 위에서 아래에서 상기 패킷 전송 네트워크에 대한 네트워크 카드를 통해 첨가된다. 수신자의 네트워크 카드를 통해 라우팅. 운영 체제 시스템 인터럽트 된 데이터 패킷을 통해 NIC가 수신 측에 통지하고, 그 반대 방향으로 부호화 발신자 디코딩, 즉, 순차적으로 링크 계층, IP 계층, ​​TCP 계층이 제거 된 헤더 체크섬 등을 통과하여, 결국 것 원시 데이터를받는 과정을보고했다.

2. AF_UNIX 도메인 소켓 통신 과정 

IPC의 전형적인 로컬 파이프 같은 경로 이름에 따라 송신기 및 수신기를 식별한다. 데이터가 전송 될 때 즉, 상기 바인딩 경로 이름의 의도 된 수신자는, 운영 시스템이 직접 수신 측에 대응하는 상기 경로 이름에 기초하여 발견 될 수 있고, 원시 데이터를 직접 수신기에 커널 버퍼로 복사되고, 수신기 처리는 것으로보고 처리. 동일한 수신기는 송신기의 경로 이름에 수신 된 패킷으로부터 획득하고 상기 경로 이름을 사용하여 데이터를 전송할 수있다.

 AF_UNIX 지역 통신 프로세스

3. 같은 지점

운영 체제는 () 인터페이스 소켓 (), 바인딩 (), () 보내) (동의) (RECV ()를 연결하고, 이벤트 감지 다중화 (), 여론 조사 그들을 선택을 제공합니다 epoll 파일 ()는 동일하다. 데이터 전송 및 수신 처리, 기본 애플리케이션 상부 감지 할 차이. 

4. 다른 점

소켓 주소 필드를 설정하면, 전송 및 어드레스 구조의 결합 () 약간 다른이다 :

  소켓 ()는 각각 다른 도메인을 통과 AF_INET와 AF_UNIX

  바인드 () 구조의 주소 (개발 IP 포트) 및 sockaddr_un를 sockaddr_in되었다 (경로 이름을 지정)

프로토콜 계층의 복수의 부호화 및 복호화 2 AF_INET 주제, 시스템은 CPU를 소모하며 데이터 전송 카드 거쳐야 대역폭 제한에 의해 네트워크 카드. AF_UNIX 데이터가 코덱 프로토콜 계층을 통과하지 않고 직접 과거 데이터를 복사, 수신자 소켓 커널 버퍼에 해당하는 경로 이름을 찾기 위해 커널에 의해 지정된 커널 버퍼, 이후에 도착, 시스템은 CPU를 저장하고 카드없이 카드 그러므로 아니다 대역폭 제한.

전송 속도는 3 AF_UNIX AF_INET보다 훨씬 크다

3 AF_INET 프로세스 간 통신뿐만 아니라 시스템과 동일한 우리에게 다른 컴퓨터 사이에서 데이터를 전송하는 네트워크에 상호 접속되는 다른 시스템 간의 통신을 위해 사용될 수있는 이용 될 수있다. AF_UNIX은 시스템 내부의 프로세스 간 통신에 사용될 수있다. 

5. 사용 시나리오

때문에 CPU 시스템의 낮은 소비 AF_UNIX, 카드는 제한된 대역폭과 높은 전송 속도, 기계가 바람직하다 AF_UNIX 통신 도메인 아니다. 말할 필요도없이, 십자가 기계 간의 통신을위한 AF_INET.

추천

출처www.cnblogs.com/heluan/p/10937098.html