[CS 기초] 네트워크

Sohyeon Bak·2022년 6월 9일
0

개발 책

목록 보기
8/18
post-thumbnail

'성공과 실패를 결정하는 1%의 네트워크 원리' 책을 바탕으로 정리한 내용입니다.

01. 소켓을 작성한다

프로토콜 스택의 내부 구성

OS

  • 네트워크 제어용 소프트웨어(프로토콜 스택)
  • 네트워크용 하드웨어(LAN 어뎁터)
    →브라우저에서 받은 메세지를 서버에 송출하는 동작을 한다.

소켓의 실체는 통신 제어용 제어 정보

  • 프로토콜 스택
    : 내부에 제어정보를 기록하는 메모리 영역을 가지고 여기에 통신 동작을 제어하기 위한 정보를 기록
  • 소켓
    : 제어 정보(IP주소, 포트 번호, 동작 진행 상태 등) 자체가 될 수 있고, 제어 정보를 기록한 메모리 영역이 될 수도 있다.
    • 소켓의 역할
      : 통신 동작을 제어하기 위한 여러 제어 정보가 기록되어있고 프로토콜 스택은 이것을 참조해 다음을 진행한다

netstat
소켓 내용을 보여주는 명령어

  • 프로토콜 종류, 로컬측 IP주소와 포트번호, 통신 상대 측의 IP주소와 포트번호, 통신 상태, PID

소켓을 호출했을 때 동작

  1. 어플리케이션
  • 클라이언트 소켓을 열도록 프로토콜 스택에 의뢰
  1. 프로토콜 스택
  • 클라이언트 소켓을 생성
    : 소켓 한개의 분량의 메모리 영역을 확보해 소켓 제어정보를 기억하는 저장할 수 있게 공간을 마련한다.
  1. 어플리케이션
  • connect 호출 (Socket 라이브러리) + 디스크립터,IP주소, 포트번호
  1. 클라이언트 소켓을 서브측 소켓에 접속

02. 서버에 접속한다

접속의 의미

소켓을 만든 직후 데이터가 보내지면 어떤 정보를 확인해 어디로 보내야할지 모르는 상황이 된다. 그래서 IP주소와 포트번호를 프로토콜 스택에 알려서 접속 상태를 만들어야 실제로 데이터 통신을 할 준비가 된다.

접속동작

첫번째 동작은 통신 상대와의 사이에 제어정보를 주고받아 소켓에 필요한 정보를 기록하고 데이터 송·수신이 가능한 상태로 만드는 것

  • 데이터 송·수신 동작 실행
    : 송수신 데이터를 일시적으로 저장하는 메모리가 필요하다(버퍼메모리)
    버퍼 메모리의 확보도 접속 동작을 할 때 실행되는데 이것 또한 접속 동작의 한 의미이다.

제어 정보를 기록한 헤더를 배치한다

제어정보

클라이언트와 서버가 서로 연락을 절충하기 위해 주고받는 것이고 접속 동작 뿐만 아니라 데이터를 송·수신하거나 연락을 끊을 때도 사용한다.
→제어 정보는 클라이언트와 서버가 주고받는 패킷의 맨 앞부분에 가야한다(헤더)

  • 제어정보는 소켓에 기록해 프로토콜 스택의 동작을 제어하고 어플리케이션에서 통지된 정보나 통신 상대로부터 받은 정보가 기록되고 이것을 프로토콜 스택이 참조해 움직인다.

접속 동작의 실제

어플리케이션의 Socket 라이브러리의 connect가 디스크립터, IP 주소, 포트번호와 함께 서버 소켓에 접속하도록 의뢰하면 정보가 TCP로 전달된다.

  1. 데이터 송·수신 동작의 개시를 나타내는 제어 정보를 기록한 헤더를 만든다.
  2. 헤더의 클라이언트 송신처가 서버 수신처의 소켓을 지정해 컨트로비트인 SYN을 1로 만든다.
    →TCP 헤더 만듦
  3. 이것을 IP 프로토콜로 보내주고 패킷 송신 동작을 실행해
  4. 네트워크를 통해 패킷이 서버에 도착하면 서버의 IP프로토콜이 이것을 받아
  5. TCP부분에 전달한다.
  6. 서버의 TCP 부분이 TCP헤더를 조사해 수신처 포트 번호에 해당하는 소켓을 찾는다
  7. 접속을 기다리는 상태에 있는 소켓 중에서 TCP헤더의 수신처 포트 번호와 같은 번호가 기록된 소켓을 발견하면 여기에 필요한 정보를 기록하고 접속 동작이 진행중이라는 상태가 된다
  8. 이 과정이 끝나면 서버의 TCP 담당은 응답을 보내준다

서버 또한 컨트롤 비트 ACK를 1로 만든 후 TCP로 보내준다. 전송이 완료가 됐으면 도착한 것을 서버에 알리기 위해 ACK 비트를 1ㄹ로 만든 TCP 헤더를 반송하고 이것이 서버에 도착하면 접속 동작이 끝난다.

→커넥션

profile
정리하고 기억하는 곳

0개의 댓글