프로토콜 스택의 내부 구성

- 맨 위에 네트워크 애플리케이션 에서 아래로 향하여 데이터 송.수신 등의 일을 의뢰함
- 애플리케이션의 아래에 Socket 라이브러리가 있고 그 안에 리졸버( DNS 리졸버 )가 내장되어 있음
- 그 아래가 OS의 내부이고 여기에 프로토콜 스택이 존재함
- 브라우저나 메일 등의 일반적인 애플리케이션은 TCP를 사용하여 데이터 송.수신
- DNS 서버에 대한 조회 등 짧은 제어용 데이터를 송.수신 하는 경우에는 UDP 사용
- 그 아래 IP 프로토콜을 사용하여 패킷 송.수신 동작을 제어
- 인터넷에서 데이터 운반 시 데이터를 작게 나누어 패킷 이라는 형태로 운반하는데 이 패킷을 통신상대까지 운반하는 것이 IP의 주 역할임
- ICMP: 패킷 운반할 때 발생하는 오류를 통지하거나 제어용 메시지 통지
- ARP : IP 주소에 대응하는 이더넷의 MAC 주소를 조사할 때 사용
- 그 아래 LAN 드라이버는 LAN 어댑터의 하드웨어를 제어
- LAN 어댑터가 실제 송.수신 동작, 즉 케이블에 대해 신호를 송.수신하는 동작을 실행함
소켓의 실체 = 통신 제어용 제어 정보
- 프로토콜 스택은 내부에 제어 정보를 기록하는 메모리 영역을 가지고 있음. 여기에 통신 동작을 제어하기 위한 제어 정보를 기록함
- 대표적 제어 정보 : 통신 상대의 IP 주소, 포트 번호, 통신 동작이 어떤 진행 상태에 있는가(ESTABLISHED, LISTENING .. )
- 소켓은 개념적인 것이어서 실체가 없으므로 굳이 말하자면 이 제어 정보가 소켓의 실체
- 프로토콜 스택은 이 제어 정보를 참조하면서 동작함
- 소켓에 기록되어 있는 상대측의 IP 주소, 포트 번호를 보고 그 대상으로 데이터 송신
- 소켓에는 송신 후 응답이 돌아오는지 여부, 송신 동작 후의 경과 시간 등이 기록되어 있음
소켓의 실체 = 통신 제어용 제어 정보 or 제어 정보를 기록한 메모리 영역
프로토콜 스택은 소켓에 기록된 제어 정보를 참조하면서 움직임
소켓 내용 표시 명령어 netstat → netstat

Socket 라이브러리의 socket( ) 의 동작
- socket이 호출되면 프로토콜 스택이 최초로 하는 일은 소켓 한 개 분량의 메모리 영역을 확보하는 것임
- 메모리 영역 확보 — 제어 정보를 담을 그릇을 준비
- 메모리 영역이 확보되면 초기 상태라는 것을 이 영역에 기록함
- 소켓에는 누구와 누가 통신하고 있는지, 그리고 그것이 어떤 상태로 있는지 등의 정보가 전부 기록되어 있음
- 소켓이 만들어지면 소켓을 나타내는 디스크립터를 애플리케이션에 알려줌