트랜스포트 계층을 배웠다면 대답할 수 있는 지식에 대해서 알아보자
-
트랜스포트 레이어의 역할을 설명하시오
물리적인 네트워크에 관계없이 근원지 컴퓨터에서 목적지 컴퓨터 간에 신뢰할 수 있고 저렴한 데이터 전송을 하고자함. Application 이 네트워크를 사용하는 데 필요한 추상화도 제공함.
TCP/IP를 배우면 트랜스포트의 역할을 진정으로 알 수 있다. 통신의 최종책임을 진다고 보면 된다.
Addressing(주소 지정), Connection Establishment(연결 설정), Connection Release, Flow control and buffering
Multiplexing, Crash Recovery등 많은 역할 또한 하고 있다.
-
그림에서 3단계 핸드셰이크가 무엇인지 설명하고 왜 필요하고 어떤 단계를 거치는지 설명하시오.
데이터 세그먼트에 대한 지연 중복문제를 해결하는 방법 중 하나이다. 이 프로토콜은 현재 연결 요청이 있는지에 관한 확인을 포함한다.
호스트 1은 순서번호 X를 선택하고 이것을 포함한 연결 요청 세그먼트를 호스트2로 보낸다. 이후 호스트 2는 X에 대한 확인 응답과 자신의 초기 순서번호 Y가 담긴 ACK세그먼트를 돌려보낸다.
그 이후 호스트 1이 2에게 초기 순서번호에 대한 확인응답을 포함시켜 최초의 데이터가 들어있는 세그먼트를 보낸다.
연결을 해제할 때도 3단계 핸드셰이크(a)를 거쳐서 해제한다.
한 사용자가 연결을 해제하기위해 DR(Disconnection Request)를 보낸다. 세그먼트가 도착하면 수신자도 다시 DR을 보내고, DR이 분실될 경우를 대비해서 타이머를 가동시킨다. 원래의 송신자 측에 이 DR이 도착하면 이 송신자는 다시 ACK 세그먼트를 보내고 연결을 해제한다. 마지막으로 ACK세그먼트가 도착하면 이 수신자 역시 연결을 해제한다.
**연결을 해제한다는 것의 의미는 트랜스포트의 개체가 그 연결에 대한 정보를 현재 설정된 연결 등의 테이블에서 제거하고 연결의 소유자에게 통보해주는 것을 말한다.
-
두 부대문제 (Two-army problem)에 대해 설명하시오
문제의 출발점은 답변에 대한 확인 응답이 있어야 한다는 것이다. 어떠한 메세지도 손실되지 않는다면, 답변에 대한 확인응답을 받아볼 수 있을 것이다. 그렇지만 제대로 전달됐는지를 모르니까 이 문제가 생긴 것이다.
프로토콜의 맨 마지막 메시지는 필수적일 수도 있고 아닐 수도 있다. 필수적인 것이 아니라면 이 맨 마지막 메시지도 제거하고 모든 메시지가 필수적이 될 때 까지 지울 수 있다. 그러면 남는 것은 필수적이기 때문에 만일 전달되지 않는다면 공격이 이루어지지 않을 것이다.
즉 세그먼트가 유실되는 경우에 이런 관계를 생각할 수 있다.
-
Transport protocol이 무엇인지 설명하시오.
2종류의 트랜스포트 프로토콜이 있는데 TCP와 UDP로 나눌 수 있다. TCP는 한 통신기기에서 송신하려는 바이트 스트림을 인터넷 상의 다른 통신기기로 오류 없이 전달하는 신뢰성 있는 연결형 프로토콜이다.
UDP는 TCP의 순서제어나 흐름제어가 없이 신뢰성 없는 비연결형 프로토콜이다.
-
그림에 보여진 TCP/IP에서 사용되고 있는 sliding window protocol의 작동원리를 설명하시오
Flow Control을 위한 방법이다. 즉 수신자와 송신자 간의 동기화를 하는 것이다.
수신자가 4KB의 버퍼크기를 가지고 있다. 송신자가 2KB를 전송하고 수신자가 올바로 수신받았다면 그 세그먼트에 대한 응답을 보내고 남은 버퍼의 크기가 수신될 것이라 기대 되는 다음 바이트(2048)부터 2KB라고 알려준다. 다시 송신자가 2KB를 보내면 수신자는 다시 확인응답을 보내고 남은 윈도우의 크기는 0이 된다.
그렇게 되면 송신자는 수신측의 응용프로그램이 버퍼에서 데이터를 제거하고 TCP까 윈도우에 여유 공간이 생겼음을 통지할 때까지 송신을 정지한다.
-
송신 프로세스가 데이터를 수신 프로세스에 전송하는 메커니즘과 수신 프로세스가 송신 프로세스로부터 수신 받는 메커니즘을 경로에 따라 자세히 설명하시오.
송신: SEND의 실행을 위해 커널을 트랩(trap)한다. 트랜스포트 개체가 하는 첫번째 일은 어떤 경우인지 알아보는 일이다. EASTABLISHED 상태인지, 연결 닫기를 시도하고 있지는 않은지, 수신측에 충분한 윈도우 크기가 존재하는지 등이다.
-> 모든 조건이 만족되면 더 이상의 검사 없이 송신 트랜스포트 개체를 통해 빠른 경로(fast path)를 택할 수 있다.
*보통 연속적인 데이터 세그먼트의 헤더는 같다
헤더는 같기 때문에 트랜스포트 개체 내에 헤더 원형(prototype)을 저장해서 송신 시 빠르게 복사한다.
세그먼트 헤더에 대한 포인터와 사용자 데이터에 대한 포인터가 네트워크 계층으로 전달된다.
마지막으로 네트워크 계층은 전송을 위해 결과 패킷을 데이터 링크 계층으로 넘겨준다.
수신: 유입 세그먼트에 대한 연결 레코드(connection record)를 찾는다.
**TCP의 경우 연결 레코드는 2 개의 IP 주소와 두 개의 포트로 구성된 단순 함수가 키인 해시 테이블에 저장
일단 레코드가 찾아지면 올바른 레코드를 찾았는지 두 주소와 두 포트가 비교된다.
그 다음 세그먼트의 상태를 조사한다. 송신쪽에서 검사하는 것과 마찬가지이다.
모든 조건이 충족되면 하나의 특별한 빠른 경로(fast path) TCP 프로시저가 호출된다.
그 이후 빠른 경로는 연결 레코드를 갱신하고 데이터를 사용자로 복사한다. 복사 중 체크섬을 계산하고 데이터에 대한 나머지 절차를 생략한다.
-
시스템 디자인을 더 좋은 성능으로 만들기 위한 계명
'컴퓨터(Computer Science) > 네트워크, Network' 카테고리의 다른 글
네트워크에 관한 내용 리뉴얼 (0) | 2021.07.05 |
---|---|
응용(Application Layer)계층에 관한 필수 지식 (0) | 2020.12.11 |
네트워크(Network Layer)계층에 관한 필수 지식 (0) | 2020.12.11 |
데이터링크(Data Link Layer) 계층에 관한 필수 지식 (0) | 2020.12.11 |
물리적계층(Physical Layer)에 관한 필수 지식 (0) | 2020.12.11 |