Backend/Network

패킷 송 수신 처리

petitCoding 2012. 4. 12. 11:25

패킷 수신 처리

 

1. 프로세서에서 소켓으로부터 데이터를 읽기 위해 데이터가 들어올 때까지 기다림
2. NIC에 패킷이 들어오면 인터럽트 (하드웨어 인터럽트) 요청
3. 커널은 실행하던 일을 일시 중단하고 인터럽트 요청에 해당하는 핸들러를 실행한다.
이때, NIC 디바이스 드라이버의 인터럽트 핸들러가 실행된다.
4. 인터럽트 핸들러는 NIC로부터 패킷을 가져와서 수신된 패킷을 처리하는 소프트 인터럽트 핸들러를
실행하도록 요청한다.
5. 소프트 인터럽트 핸들러에서는 수신 패킷의 헤더를 해석하여 해더 정보에 해당하는 프로토콜 층을 호출한다. 수신 함수에서는 헤더를 해석하여 목적한 소켓에 패킷을 보낸다. 만약 그 소켓에 대기하고 있는 프로세스가 있으면 대기하는 프로세스(1번)을 실행시킨다.
6. 프로레스는 소켓으로부터 데이터를 읽는다.

 

패킷 송신 처리

 

1. 어떤 프로세스가 소켓에 데이터를 쓰려고 할 때, 그 데이터는 TCP/IP 층에서 헤더를 붙여 패킷으로 만든 후 NIC디바이스 드라이버로 전달된다.
2. 디바이스 드라이버는 컴트롤러를 제어하고 패킷 송신을 요청한다.
3. 컨트롤러의 패킷 송신이 완료되면 송신 완료 인터럽트가 발생한다.
4. 커널은 인터럽트 요청에 해당하는 인터럽트 핸들러를 실행한다.
5. 인터럽트 핸들러에서는 송신이 완료된 패킷을 해제하고 송신 완료용의 소프트 인터럽트 핸들러를 실행하도록 요청한다.
6. 수신 처리용 소프트 인터럽트 핸들러는 NIC의 디바이스 드라이버에게 송신 처리를 하게 한다.

 

 

반응형

'Backend > Network' 카테고리의 다른 글

SSH  (0) 2012.04.12
IPv6 헤더 구조  (0) 2012.04.12
ICMP  (0) 2012.04.12
TLS 프로토콜 정리.  (0) 2012.04.12
OSI MODEL  (0) 2012.04.12