[네트워크] 애플리케이션 계층 1

드림보이즈·2024년 6월 18일
0

소켓 프로그래밍

소켓?

  • 어플리케이션과 네트워크 사이의 인터페이스
  • 소켓 타입이 소통 방식을 결정 (udp/tcp)
  • 생성후 소켓을 통해 데이터를 보낼 수도, 받을 수도

두 타입의 소켓 : TCP / UDP

소켓 API


    1. Create socket
    1. Bind Port
    1. listen
    1. Accept


  • Listen은 non-blocking
  • Accept는 blocking

  • Connect는 blocking
  • Write = blocking
  • Read - blocking

Tips : port releasing


실제로 프로세스를 죽여도, 바인딩된 포트는 죽지 않고 남아 있는 경우가 있다.
코드에 프로세스를 죽일 때 포트 바인딩을 풀어주자.


3. Transport Layer

Multiplexing/Demultiplexing

  • 멀티플렉싱 : 보내는 측의 transport 계층은 위에서 여러 소켓에서 오는 걸 받아서 처리해야 되므로
  • 디멀티플렉싱 : 받는 측은 올바른 소켓에 넣어줘야 하니까

How demultiplexing works

header를 보고 어떤 소켓에 넣을지 판단한다.

connection-oriented demux : Threaded web server

TCP는 보내는 쪽의 , 소스 아이피,포트가 다르면 다른 소켓으로 Demux된다.
그래서 연결 지향적이라는 것이다. 한 소켓이 반드시 하나의 프로세스랑만 연결되므로

UDP

보내는 이 상관없이 받는 쪽의 ip, port만 가지고 판단한다. 그래서 커넥션의 개념이 아니다.

  • 체크섬 : 데이터 제대로 왔나 판단, udp는 에러있으면 안 올리고 드랍해버림.

헤더를 이해하는 것은 프로토콜을 이해하는 것이다!!!

profile
10년 후 세계 최고 블록체인 개발자

0개의 댓글

관련 채용 정보