호우동의 개발일지

Today :

article thumbnail
[Network] TCP 연결의 개념, 원리 및 세그먼트 구조 정리

TCP 연결 TCP - 연결지향형(connection-oriented) 두 프로세스 간의 데이터 전송 및 수신을 위해 핸드셰이크가 필요 데이터 전송을 보장하는 파라미터들을 설정해야 함 → 각자 어떤 사전 세그먼트들을 보낸다. TCP 연결의 양단은 TCP 연결과 연관된 많은 TCP 상태 변수를 초기화한다. TCP 관점에서의 연결 두 통신 종단 시스템의 TCP에 존재하는 상태를 공유하는 논리적인 것 TCP 프로토콜은 오직 종단 시스템에서만 동작, 중간 네트워크 요소에서는 동작 X → 중간 네트워크 요소들은 TCP 연결 상태를 유지하지 않는다. 중간 라우터들은 TCP 연결을 전혀 감지하지 못한다. 중간 라우터는 연결은 보지 못하고, 데이터그램만 봄 TCP 연결은 한쪽 호스트에서의 소켓 연결과 다른 쪽 호스트에..

article thumbnail
[Network] 파이프라이닝 오류 회복 방법 - GBN,SR 정리

GBN(Go-Back-N, N부터 반복) 프로토콜 프로토콜 이름은 손실이 있거나 아주 긴 지연된 패킷이 있을 때의 송신자 동작으로부터 유래됨 해당 프로토콜에서 송신자는 확인응답을 기다리지 않고 여러 패킷을 전송할 수 있다. 파이프라인에서 확인응답이 안 된 패킷의 최대 허용 수 N보다 크면 안 된다. GBN 프로토콜의 사용으로 송신자는 패킷으로 파이프라인을 채우는 것이 가능해짐 송신자 관점의 순서 번호 범위 base : 확인응답이 안 된 가장 오래된 패킷의 순서 번호 nextseqnum : 사용되지 않은 가장 작은 순서 번호 전송될 다음 패킷의 순서 번호 4가지 순서 번호 범위 간격 [0, base-1] 순서 번호는 이미 전송되고 확인응답된 패킷에 대응된다. 간격 [base, nextseqnum-1] 송신..

article thumbnail
[Network] rdt3.0(전송 후 대기) 분석과 파이프라이닝의 필요성

rdt3.0 비트 오류와 손실 있는 채널상에서의 신뢰적인 데이터 전송 2가지 부가 내용을 프로토콜로 생각해야 함 어떻게 패킷 손실을 검출할 것인가? 새로운 프로토콜 메커니즘을 추가해야 함 패킷 손실이 발생했을 때, 어떤 행동을 할 것인가? 체크섬, 순서 번호, ACK 패킷, 재전송의 사용 송신자에게 손실된 패킷의 검출과 회복 책임을 부여 송신자의 손실된 패킷의 검출 가정 송신자가 데이터 패킷을 전송하고, 패킷 또는 수신자 패킷에 대한 ACK를 손실 → 송신자에게는 수신자로부터 어떠한 응답도 없음 송신자가 패킷을 잃어버렸다고 확신할 정도로 충분한 시간을 기다릴 수 있다면, 패킷을 재전송 가능 패킷 손실 확신을 위해선 얼마나 기다려야 할까? 적어도 송신자와 수신자 사이의 (왕복 시간 지연 + 수신 측에서 패..

article thumbnail
[Network] 신뢰적인 데이터 전송 프로토콜 - rdt 1.0 / rdt 2.0(1,2) 분석

rdt 1.0 rdt 1.0 : 완벽하게 신뢰적인 채널상에서의 신뢰적인 데이터 전송 프로토콜 하위 채널이 완전히 신뢰적인 가장 간단한 경우 유한 상태 머신(FSM) 정리 rdt1.0 송신자와 수신자에 대한 유한상태 머신(finite-state machine) (a) : FSM은 송신자의 동작을 정의 (b) : FSM은 수신자의 동작을 정의 송신자와 수신자는 분리된 FSM을 가진다. 해당 그림에서 송신자와 수신자 FSM은 각각 하나의 상태만을 가진다. 하나의 상태를 가지므로, 전이는 그 상태로부터 자신으로 되돌아옴 유한 상태 머신 표기 점선 화살표 : FSM의 초기 상태 액션(action) : 이벤트가 발생했을 때 취해지는 것 가로선 아래에 나타냄 이벤트(event) : 전이를 일으킴 가로선 위에 나타냄 ..

article thumbnail
[Network] 신뢰적인 데이터 전송 서비스 추상화와 동작 원리

신뢰적인 데이터 전송의 원리 신뢰적인 채널의 서비스 추상화 상위 계층 객체에게 제공에게 제공된다. 데이터가 전송될 수 있는 신뢰적인 채널의 서비스 추상화이다. TCP 인터넷 애플리케이션에게 제공하는 서비스 모델 신뢰적인 채널에서 전송된 데이터는 손상이나 손실되지 않는다. 모든 데이터는 전송된 순서 그대로 전달된다. 신뢰적 데이터 전송 프로토콜의 의무 - 서비스 추상화를 구현 신뢰적인 전송 프로토콜 ‘아래에 있는’ 계층이 신뢰적이지 않을 수 있어서 어려워진다. 예시 TCP → IP의 바로 상위에 구현된 신뢰적인 데이터 프로토콜 비신뢰적인 종단 간의 네트워크 계층(IP) 신뢰적으로 통신하는 두 종단점 바로 아래에 있는 계층의 구성 단일 물리적 링크(링크 레벨 프로토콜) 전 세계 인터넷 네트워크(트랜스포트 레..

article thumbnail
[Network] 비연결형 트랜스포트(UDP)의 특징과 구조

UDP - 최소 기능의 트랜스포트 계층 프로토콜 UDP는 트랜스포트 계층 프로토콜이 할 수 있는 최소 기능으로 동작한다. UDP가 제공하는 기능 다중화/역다중화 간단한 오류 검사 기능 → IP에 아무것도 추가하지 않는다. UDP를 사용한다는 것은 거의 IP와 직접 통신하는 것과 같다. 데이터 전달 과정 애플리케이션 프로세스로부터 메시지를 가져와서 세그먼트를 생성하여 네트워크 계층으로 넘김 세그먼트의 구성 다중화/역다중화 서비스에 대한 출발지 포트 번호 필드와 목적지 포트 번호 필드 다른 2개의 필드 네트워크 계층은 세그먼트를 IP 데이터그램으로 캡슐화하고, 수신 호스트에게 전달하기 위해 최선을 다한다. 세그먼트가 수신 호스트에 도착 UDP는 데이터 전달을 위해 목적지 포트 번호를 사용해 애플리케이션 프로..

article thumbnail
[Network] 트랜스포트 계층의 데이터 다중화와 역다중화

트랜스포트 계층의 데이터 수신 및 전달 트랜스포트 계층의 의무 목적지 호스트의 트랜스포트 계층은 바로 아래의 네트워크 계층으로부터 세그먼트를 수신 → 목적지 호스트의 트랜스포트 계층은 호스트에서 동작하는 프로세스에게 수신한 세그먼트를 전달할 의무를 지님 예시 4개의 네트워크 애플리케이션을 갖는다고 가정 트랜스포트 계층이 하위 네트워크 계층으로부터 데이터를 수신 → 4개의 프로세스 중 하나에게 데이터를 전달해야 함 트랜스포트 계층에서의 소켓 프로세스는 네트워크 애플리케이션의 한 부분으로서 소켓을 가지고 있다. 이를 통해 네트워크와 프로세스 간의 데이터를 교환하는 출입구 역할을 함 수신 측 호스트의 트랜스포트 계층은 데이터를 직접 프로세스에 전달하지 않는다. → 대신 중간 매개자인 소켓에게 전달 각각의 소켓..

[Network] 인터넷 프로토콜(IP) 개념과 UDP/TCP 서비스 모델

인터넷 트랜스포트 계층의 개요 인터넷 문서(RFC)에서 트랜스포트 계층 패킷 용어 표기 TCP → 세그먼트 UDP → 세그먼트 or 데이터그램 인터넷 프로토콜(IP) 인터넷 프로토콜(Internet Protocol) 인터넷의 네트워크 계층 프로토콜의 이름 IP 서비스 모델은 호스트들 간에 논리적 통신을 제공하는 최선형 전달 서비스 최선형 전달 서비스(best-effort delivery service) IP가 통신하는 호스트들 간에 세그먼트 전달에 최대한 노력한다. 하지만 IP는 어떤 보장도 하지 않는다. 세그먼트의 전달을 보장하지 않는다. 세그먼트가 순서대로 전달되는 것을 보장하지 않는다. 세그먼트 내부 데이터의 무결성(integrity)을 보장하지 않는다. → 이러한 이유로 IP를 비신뢰적인 서비스라..