본문으로 바로가기

프로토콜 스택에 메시지 송신을 의뢰

category 네트워크 2013.12.03 17:01

IP 주소를 조사했으면 IP 주소의 웹 서버에 메시지를 송신하도록 OS의 내부에 있는 프로토콜 스택에 의뢰할 차례다.

데이터 송수신 동작의 개요

OS 내부의 프로토콜 스택에 메시지 송신 동작을 의뢰할 때는 Socket 라이브러리 프로그램 부품을 결정된 순번대로 호출한다. Socket 라이브러리를 이용한 데이터 송수신 동작을 이미지로 나타내보면 아래와 같다.

데이터를 송수신하는 컴퓨터 사이에 데이터의 통로 같은 것이 있고, 이것을 통해 데이터가 흐르면서 상대측에 도착하게 된다. 송수신 동작을 하기 전에 송수신하는 양자 사이를 연결하는 동작이 필요하게 되며 이 데이터의 출입구를 소켓이라고 부르며 이 소켓을 우선적으로 만들어야 한다. 실제로는 서버측에서 소켓을 만들고, 소켓에 클라이언트가 연결되기를 기다리고 있는 것이다.

이 과정을 정리하면 아래와 같으며 모두 OS 내부의 프로토콜 스택에 의해 행해지는 것이다.

  1. 소켓을 만든다
  2. 서버측의 소켓에 파이프를 연결한다.
  3. 데이터를 송수신 한다.
  4. 연결을 분리하고 소켓을 말소한다.

소켓을 만들고 소멸하는 순서

  1. 소켓 라이브러리의 socket이라는 프로그램 부품을 호출
  2. 소켓이 생기면 디스크립터라는 것이 돌아오는데 이것을 받아서 메모리에 기록(디스크립터는 소켓을 식별하기 위해 사용하는 식별자)
  3. 만든 소켓을 서버측의 소켓에 접속하도록 프로토콜 스택에 의뢰하는데 Socket 라이브러리의 connect라는 프로그램 부품을 호출하여 이 의뢰 동작을 실행
  4. 연결이 성공되면 프로토콜 스택은 연결된 상대의 IP 주소나 포트번호등의 정보를 소켓에 기록
  5. 송신 데이터를 메모리에 준비(사용자가 입력한 URL을 바탕으로 만든 HTTP 리퀘스트 메시지)하고 write를 호출하면 프로토콜 스택이 송신 데이터를 서버에게 송신
  6. 액세스 대상의 서버에 데이터가 도착하고 서버는 수신 동작을 실행하여 받은 데이터의 내용을 조사하고 적절한 처리를 실행하여 응답 메시지를 반송
  7. 수신할때는 Socket 라이브러리의 read라는 프로그램 부품을 통해 프로토콜 스택에 수신 동작을 의뢰하며 수신한 응답 메시지를 저장하기 위한 메모리 영역(수신 버퍼)을 지정
  8. 브라우저가 데이터 수신을 완료하면 Socket 라이브러리의 close라는 프로그램 부품을 호출하여 연결 끊기
  9. 소켓사이의 연결이 분리되고 소켓이 말소된다.


신고

댓글을 달아 주세요

티스토리 툴바