*Multiplexing/demultiplexing
Demultiplexing at rcv host
segment의 data를 올바른 socket으로 전달하는 작업
Multiplexing at send host
socket들로 부터 data를 모으고 각 data의 header정보로 캡슐화 하고 하위 layer로 전달하는 작업
# 여러개의 프로세스가 하나의 TCP나 UDP로 하나로 묶는다.
# 어플리케이션은 소켓을 통해 데이터를 전달만 하면된다.
# 소켓만 생각하면 된다.
# 네트워크에서 멀티플렉싱이 의미하는것은?
- 낮은 속도의 라인을 여러개로 묶어서 사용
믹서나 먹서라고 불리던 프로토콜가 쓰였음
- 64bps의 속도로 통신하는 유럽에서 사용하던 규격(E0)
- 56bps의 속도로 통신하는 유럽에서 사용하던 규격(T0)
*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를 전달한다.
# 소스포트는 보내는 곳의 포트넘버
# 데스트포트는 받는 곳의 포트넘버
# 소켓을 찾는 방식으로만 사용한다.
*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);
# 가운데 있는 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을 이용한다.
# P4, P5, P6은 무슨 프로세스인가?
웹서버(아파치)
# P1 - P4와만 통신 해야한다. P5 - P3
# 통신하고 있는 상대방 포트넘버도 포함되어있다. 그래서 구분이 가능
# 소켓은 데이터 통신을 하는동안의 세션을 유지시켜준다.
- 매번 새로운 페이지로 이동할때마다 다른 프로세서와 통신
# 매번 포크를 통한 메모리에 복사를 해야하는것이 자원을 많이 차지한다.
*Connect oriented
demux Thread Web server
# 멀티쓰레드 프로그램
- 통신에서 쓰레드가 쓰이는 의미
통신에서 하나인지 여러개인지 모르는것
- 소켓을 여러 개 만드는 기능이 제공
댓글 없음:
댓글 쓰기