2020. 6. 8.

[Network] 3.2 다중화와 역다중화


*Multiplexing/demultiplexing

Demultiplexing at rcv host
segment data를 올바른 socket으로 전달하는 작업

Multiplexing at send host
socket들로 부터 data를 모으고 각 data header정보로 캡슐화 하고 하위 layer로 전달하는 작업
# 여러개의 프로세스가 하나의 TCP UDP 하나로 묶는다.

# 어플리케이션은 소켓을 통해 데이터를 전달만 하면된다.
# 소켓만 생각하면 된다.
# 네트워크에서 멀티플렉싱이 의미하는것은?
  • 낮은 속도의 라인을 여러개로 묶어서 사용
믹서나 먹서라고 불리던 프로토콜가 쓰였음
  • 64bps 속도로 통신하는 유럽에서 사용하던 규격(E0)
  • 56bps 속도로 통신하는 유럽에서 사용하던 규격(T0)

Process 
socket
application 
transport 
physical 
host 
PI 
application 
phys i cal 
host 2 
22 
24 
applicatim 
physical 
host 3

*Transport layer에서 demultiplexing

Transport layer에서 demultiplexing을 위한 요구 사항
  • socket은 유일한 식별자를 갖는다.
  • segement segment가 전달될 적절한 socket을 가르키는 특별한 field(소스 포트, 데스트포트)를 갖는다.
  • 이들 특별한 field source destination port 번호이다. (0~1023 까지의 port wellknow port라고 한다.: RFC 1700에 명시되어있다.)
# 포트 넘버와 유닉스와의 상관관계 - 보안상 매우 중요한 문제
  • 반드시 root 띄울수 있다.
  • 루트권한이 탈취될수 있다. ex) sendmail에서 일어남
  • 방지하기 위해 생긴
    • 루트가 실행하는것이 원칙
    • 누가 수행하거나 소유자의 권한으로 프로세스가 올라감 (ex)named, mysql)
Segment host에 도착하면 T/L segment안에 목적지의 port #를 검사하고 이에 상응하는 socket으로 data를 전달한다.
# 소스포트는 보내는 곳의 포트넘버
# 데스트포트는 받는 곳의 포트넘버
# 소켓을 찾는 방식으로만 사용한다.


so"rce port # 
dest port # 
heodQr ticlds 
appl ication 
Dato 
(message) 
blDP/TCP segment format 
port# ; O— 65534

*Connectionless demultiplexing(UDP)

Port #를 이용 socket을 생성한다.
DatagramSocket mysocket1=new
DatagramSocket(59111);
# 어떤 프로그램이 59111 포트넘버의 소켓을 연다.
DatagramSocket mysocket1=new
DatagramSocket(59222);
UDP socket목적지 IP와 목적지 port #로 구성된 두 요소로 된 집합에 의해 식별된다.
UDP segment 전달
  • Segment dest port #를 검사한다.
  • Segment를 적절한 socket으로 전달한다.
두개의 UDP segment들이 출발지 IP port # 가 둘다 다르거나 둘 중 하나가 다르더라도 동일한 목적지 IP port #를 갖는다면 동일한 socket을 통해 process에 전달된다.
# 많은 자원을 사용할 있다는 이유

DatagramSocket serverSocket = new DatagramSocket(6428);

ssøappo u 』 4 , p 峄 0 」 d dS 
9 :dI 
;dS

# 가운데 있는 P3 여러개의 소켓을 6428 소켓 하나로 통신 가능(UDP 특징)
  • 메모리 사용이 적어짐

*Connection oriented demux(TCP)

TCP socket 4개의 요소로 구성된 집합에 의해 식별된다.
  • source IP
  • source port #
  • dest IP
  • dest port #
Host segment가 도착하면 host는 적절한 socket으로 segment를 전달하기 위해 네개의 값을 모두 사용한다.
Server host는 동시에 여러 개의 TCP socket을 지원한다.
  • socket들은 앞에본 4개의 tuple에 의해 구별된다.
Web server는 각각의 client 접속에 대해 서로 다른 socket 이용한다.
  • non-persistent HTTP의 경우 모든 요청마다 다른 socket을 이용한다.
각각의 object마다 새로운 TCP connection을 이용한다.

chent 
S•IP: g 
DP … 80 
SR; 9157 
D•I.P:C

# P4, P5, P6 무슨 프로세스인가?
웹서버(아파치)
# P1 - P4와만 통신 해야한다. P5 - P3
# 통신하고 있는 상대방 포트넘버도 포함되어있다. 그래서 구분이 가능
# 소켓은 데이터 통신을 하는동안의 세션을 유지시켜준다.
  • 매번 새로운 페이지로 이동할때마다 다른 프로세서와 통신
# 매번 포크를 통한 메모리에 복사를 해야하는것이 자원을 많이 차지한다.

*Connect oriented demux Thread Web server

93 
Client 
80 
s.rp: 
o.tp:c 
serwer 
SP; 5775 
s.1P: g 
OP: 80 
D-IP;c

# 멀티쓰레드 프로그램
  • 통신에서 쓰레드가 쓰이는 의미
통신에서 하나인지 여러개인지 모르는것
  • 소켓을 여러 만드는 기능이 제공


댓글 없음:

댓글 쓰기