Home 1%의 네트워크 원리 (05) - 웹 브라우저가 메시지를 생성 4
Post
Cancel

1%의 네트워크 원리 (05) - 웹 브라우저가 메시지를 생성 4

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

1%의 네트워크 원리 (05) - 웹 브라우저가 메시지를 생성 4

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

1 데이터 송·수신 동작 개요

소켓

  • 파이프 양 끝에 있는 데이터의 출입구
  • 서버측에서 소켓 생성
  • 소켓에 클라이언트가 파이프를 연결하기를 기다림
  • 데이터를 전부 보내고나면 연결했던 파이프 분리
  • 분리 순서는 규칙으로 결정됨

애플리케이션 -> Socket 라이브러리 -> 프로토콜 스택

  1. 소켓 작성
  2. 서버측 소켓에 파이프 접속
  3. 데이터 송·수신
  4. 파이프 분리, 소켓 말소

2 소켓의 작성 단계

socket()

1
2
3
4
5
6
<메모리 영역> = gethostbyname(도메인명); // DNS
<디스크립터> = socket(...); // 준비
connect(...); // 접속
write(...); // 송신
<수신 데이터 길이> = read(...); // 수신
close(...); // 연결 끊기

디스크립터

  • 소켓 식별 역할
  • 하나하나의 소켓에 할당한 번호같은 것
  • 한 대의 컴퓨터에 브라우저의 2개 창을 열어 2개의 웹 서버에 동시에 액세스 등

3 파이프를 연결하는 접속 단계

connect()

IP 주소

  • 네트워크에 존재하는 각 컴퓨터를 식별하기 위해 각각에 서로 다른 값을 할당한 것
  • 각 기기가 아닌 기기에 장착된 각각의 네트워크용 하드웨어에 할당
  • 복수의 네트워크 하드웨어를 장착한 기기에는 복수의 주소 할당
  • 네트워크의 어느 컴퓨터까지 지정하기 때문에 IP 주소로는 소켓까지는 지정 불가

디스크립터

  • 컴퓨터 한 대의 내부에서 소켓을 식별하기 위해 사용
  • 소켓을 만들도록 의뢰한 애플리케이션측에 건넴
  • 접속 상대에게 건네지 않음

포트 번호

  • 접속 상대측에서 소켓을 식별하기 위해 사용
  • 서버측의 포트 번호는 애플리케이션의 종류에 따라 미리 결정된 값을 사용한다는 규칙 존재
  • 클라이언트측의 소켓의 포트 번호는 소켓을 만들 때 프로토콜 스택이 적당한 값을 골라 할당
  • 이 값을 프로토콜 스택이 접속 동작을 실행할 때 서버측에 통지

4 메시지를 주고 받는 송·수신 단계

write(), read()

  1. 애플리케이션
    • 메모리
    • 송신 데이터(HTTP 리퀘스트 메시지)
    • write()로 디스크립터, 송신 데이터 지정
  2. 프로토콜 스택
  3. 서버
  4. 프로토콜 스택
    • 수신 버퍼
    • 수신 데이터(응답 메시지)
    • read()
  5. 애플리케이션

5 연결 끊기 단계에서 송·수신 단계 종료

close()

브라우저가 데이터 수신을 완료하면 송·수신 동작 끝

웹 서버측에서 close() 호출해 연결 끊음

  • 클라이언트측에 전달되어 클라이언트의 소켓은 연결 끊기 단계로 진입
  • 브라우저가 read()로 수신 동작 의뢰
  • read()는 수신 데이터 전달 대신 송·수신 동작 완료로 연결이 끊겼다는 사실을 통지
  • 브라우저에서도 close() 호출해 연결 끊기 단계로 진입

메시지를 실제로 송·수신하는 것

  • 프로토콜 스택
  • LAN 드라이버
  • LAN 어댑터

참고

성공과 실패를 결정하는 1%의 네트워크 원리

This post is licensed under CC BY 4.0 by the author.