→ Open in Slid

  • 본 글은 이전에 사용하던 영상 강의 필기 앱인 'Slid'에서 필기 했던 내용을 Velog로 옮긴 내용입니다.
  • 본 글은 이화여대 이미정교수님 2014학년도 1학기 컴퓨터 네트워크 강의를 기반으로 작성되었습니다.
  • 강의 링크 : http://www.kocw.net/home/search/kemView.do?kemId=1046412

Socket programming

socket은 UDP를 이용해 client-server간에 데이터를 전송할 수도 있고, TCP를 사용할 수도 있다.

UDP를 사용할 경우

  • client - server 간 통신을 위한 set-up이 필요없기 때문에 데이터 전송 전에 handshaking이 필요가 없게 된다.
  • 내보내는 메시지에 목적지 주소와 포트번호를 붙여서 보낸다. (중요)
  • 일반적으로 client의 IP주소와 port번호는 알려져 있지 않다. 그렇다면 이를 어떻게 알아내나? - 자기가 받은 segment로부터 추출하게 된다. (중요)

Client/server socket interaction: UDP

client - server간에 통신이 이루어지기 위해서는 server 프로세스가 먼저 실행되고 있어야 한다.

그러기 위해선 먼저

  1. server socket을 먼저 생성한다.
  2. 이후 client socket을 생성한다.
  3. client socket에서 서버의 port번호와 IP주소를 패킷에 붙여서 내보낸다.
  4. 그럼 이를 server는 server socket을 이용해 읽어들이게 된다.
  5. 그럼 server socket이 답을 하기 위해서는 client address와 port number를 명시해야 한다. (그러나 이는 client process조차 모른다.) - 이는 운영체제가 알아서 mapping하기 때문 - 그러나 server는 client가 데이터를 내보낼 때 붙어있는 번호를 이용해 이를 extract(추출)해서 알게 된다.
  6. 그럼 client는 client socket을 이용해 이를 읽고 client socket을 닫게 된다.
  7. server socket은 계속 실행된다!!

Example app: UDP client

컴퓨터 네트워크 8강 image

Example app: UDP server

컴퓨터 네트워크 8강 image

Socket programming with TCP

클라이언트는 반드시 서버와 연결되어야 한다.(handshake필요)

  • 서버가 반드시 먼저 실행중이어야 한다.
  • 서버는 socket(welcome or door socket)을 생성하는데, 이는 client의 contact를 받아들이기만을 위한 용도다.
  • 이후 client는 TCP socket을 생성
  • client가 server에 contact하기 위해서는 IP주소와 port번호를 명시를 해줘야 한다. (TCP socket을 통해서)
  • 이러면 client TCP와 server TCP가 connection을 맺게 된다.
  • 이후 아까 만들어두었던 door socket으로 받아들이면, server TCP는 해당 client만을 위한 새로운 socket을 생성한다.
  • TCP socket programming을 할 때는 목적지를 별도로 명시하지 않는다.
  • 왜냐하면 목적지 app에서 상대방 socket이 누구라는 걸 TCP계층에서 이미 알고 있기 때문

그렇다면 왜 TCP는 door socket 같은게 필요하며, client 별로 새로 socket을 생성해야 하는가?

  • 이는 TCP가 byte-stream을 교환하기 때문이다
  • UDP는 독립적이다. 따라서 UDP에서는 message 하나를 받으면 그 message에 대한 답을 보내주면 끝이다.
  • But TCP에서는 server-client 통신 중 다른 client의 contact 또한 받을 수 있어야 하기 때문에 이렇게 작동한다.
  • server socket은 connection socket(초기에 contact를 위해 열어놓았던 socket)만 종료시킨다!!

Client/server socket interaction: TCP

컴퓨터 네트워크 8강 image

Example app: TCP client

컴퓨터 네트워크 8강 image

Example app: TCP server

컴퓨터 네트워크 8강 image

P2P 아키텍쳐

  • P2P 아키텍쳐에서 각 Endsystem은 클라이언트이자 서버이다.
  • 유저가 증가하면 Request도 늘고 Response도 는다.
  • 스스로 몸집을 키워나가는 Self - Scalabilty(확장성) 특징을 가지고 있다.
  • Bit Torrent
  • - 파일은 256kb로 나뉜다.
  • - 토렌트 : 피어들의 그룹
  • - 트렉커 : 그룹에 속한 피어들의 정보를 저장한다.
  • - tit for tat 원칙으로 작동한다. -> 나한테 많이 전송해준 유저에게 나도 많이 전송한다.
  • - Starvation을 막기 위해 무작위로 최대한 전송해주고 응답을 tit for tat 원칙으로 평가한다

Summary

application architecture

  • client - server
  • P2P (확장성의 장점을 가지고 있다)

application service requirements

  • reliability(신뢰성 - 오류없이),  bandwidth(전송속도), delay(지연율)

Internet transport service model

  • 현재 인터넷 서비스에서는 신뢰성을 높이는 작업만을 할 수 있다. 따라서 사용되는 것이 TCP
  • connection-oriented, reliable: TCP
  • unreliable, datagrams: UDP

specific protocols

  • HTTP
  • FTP
  • SMTP, POP, IMAP
  • DNS
  • P2P: BitTorrent, DHT

socket programming (우리 스스로가 network application을 작성하는데 필요로 한 게 바로 socket이다!)

  • TCP sockets
  • UDP sockets

Transport Layer - 전송계층 (Chapter 3)

  • 지금까지 공부했던 Application Layer는 전송을 담당하는 계층이 아니다. Http는 사용자가 만들어낸 데이터를 메세지로 만드는 '규칙'이었고 DNS는 도메인-IP간 매핑을 해주는 '서비스'였다.
  • 애플리케이션 계층의 웹브라우저든 이메일 클라이언트든 모두 "프로세스"이다. TCP는 프로세스 간 "Logical Communication"을 담당한다.
  • Logical Communication, 논리적 통신이란 실제 전송이 아니라 메세지를 주고받는 과정에서 오류체크, 흐름제어 등을 한다는 것이다.
  • 전송계층의 두 프로토콜
    TCP : Transmission Control Protocol
    UDP : User Datagram Protocol

멀티플렉싱, 디멀티플렉싱

  • 멀티플렉싱(보내는 쪽)이란? ( Multiplexing, 줄여서 mux라고도 한다.)
    - 하나의 통신 채널로 여러개의 데이터를 동시에 보내는 것이다.
    - 여러 애플리케이션들이 전송계층으로 메세지를 전달하면 전송계층에서는 헤더(목적지를 찍어줌)를 붙여서 캡슐화하고 네트워크 계층으로 일렬로 내려보낸다.
  • 디멀티플렉싱(받는 쪽)이란? ( Demultiplexing, 줄여서 demux라고도 한다.)
    - 수신 측 전송 계층에서 네트워크 계층에서 일렬로 올라온 데이터들을 헤더정보를 보고(sender 측에서 찍어준 목적지를 보고) 알맞은 각 애플리케이션 소켓으로 전달하는 것이다.
    - Connection Oriented demuxTCP의 경우 연결을 맺는데 사용되는 Door Socket이 있고 커넥션 별로 소켓이 따로 있다.
    - 따라서 한 프로세스가 커넥션 마다 소켓 하나씩을 가지므로 여러개의 소켓을 가질 수 있다.
    - 따라서 demux를 위해선 목적지 프로세스와, 출발지 프로세스에 대한 정보가 필요하다.
    - 목적지 프로세스 구분을 위해 : 목적지 IP, 포트번호
    - 출발지 프로세스 구분을 위해 : 출발지 IP, 포트번호
    - 따라서 TCP는 총 네개의 정보가 필요하다.

How demultiplexing works

segment - header와 payload로 이루어짐.

transport 계층에서 만들어내는 data unit을 segment라고 한다.

  • header에 반드시 포함되어야 하는 필드: source port, destination port
  • payload

0개의 댓글

Powered by GraphCDN, the GraphQL CDN