Computer Science/Network

Congestion이 무엇이냐? 사전적 의미는 혼잡, 과잉이라는 뜻을 가지고 있습니다. 네트워크에서 너무 많은 것들이 한정된 공간을 사용하려고 할 때 발생하는 상황을 가리킵니다. 네트워크에서 Congestion이 일어나면, 딜레이가 길어지고, 패킷이 유실되는 상황이 발생합니다. Congestion control과 flow control은 다른 개념입니다. Congestion control은 네트워크의 트래픽이 많아져 네트워크의 성능이 저하되는 혼잡 상태를 관리하는 기술이고, Flow control은 송신자와 수신자 간의 데이터 전송 속도를 조절하여 오버플로우를 방지하는 기술입니다. 각각은 다른 개념이지만 함께 사용되어 네트워크의 효율적인 데이터 전송을 가능하게 해 줍니다. Congestion의 원인과 비..
TCP는 신뢰성 있는 연결을 하는 프로토콜입니다. UDP랑 다르게 연결을 시작할 때도 복잡한 과정을 거칩니다. 연결을 시작하기전에, 송신/수신의 상태를 확인하는 과정이 필요합니다. 2-way handshake TCP 연결을 수립하는 방법 중 하나입니다. 클라이언트에서 연결을 하고싶다고 제안하면, 서버 측에서 승낙하는 방식입니다. 동작 방식 클라이언트가 서버에게 연결을 요청합니다. 이때 Headr의 SYN bit를 1로 설정하여 보냅니다. 서버가 연결이 가능할 경우, 클라언트에게 응답을 보냅니다. TCP header의 ACK,SYN bit를 1로 설정하여 보냅니다. 클라이언트가 서버로 부터 받은 ACK 패킷과, SYN 패킷을 확인하고, 데이터를 전송합니다. 설명의 편의를 위해서 왼쪽을 A, 오른쪽을 B라고..
TCP flow control의 이유 음 예를 들면 이제 음식점이 있겠네요. 주방에서 동시에 조리 가능한 음식을 6개라고 가정합시다. 이러면 홀에서는 주방에 상황에 따라 유동적으로 음식을 주문받고, 조금만 기다려 달라고 손님들에게 양해를 구해야 합니다. 만약 이렇지 않고 , 맘대로 주문을 받아버리면 주방에서는 대혼란이 오는 상황이 발생합니다. 나는 지금 조리가 불가능한데 음식을 그렇게 받으면 어떡하니?라고 홀에게 말하겠죠. (실제로 경험담입니다) 아무튼 이것도 컴퓨터로 엮어볼 수 있습니다. 네트워크 레이어에서 상위 계층(Transport Layer)으로 운반하는 속도가 트랜스포트 계층에서 상위계층(애플리케이션)으로 보내는 속도보다 빠르면 어떻게 될까요? 당연히 트랜스포트 계층에서는 정신이 없고, 최악의 ..
TCP는 이제 설명하기 너무 입 아픕니다. 그저 간단하게 설명하자면 데이터의 신뢰성 있는 연결이 가능한 프로토콜입니다. TCP 프로토콜의 특징 point- to - point 하나의 sender는 하나의 receiver와 통신한다. Reliable, in-order byte system 데이터는 순서대로 applicaton layer로 넘겨지고, 데이터를 byte단위로 처리하기에, message의 맥락을 신경 쓰지 않는다. full duplex data 데이터 통신을 할 때 양방향으로 흐른다. cumulative ACKs 데이터의 신뢰성과 정확성을 확보, 안정적인 데이터 전송을 지원 pipelining TCP congetsion, flow cotrol이 window size를 결정함. connection..
RDT란? RDT(reliable data transfer)는 신뢰성 있는 데이터 전송을 위한 프로토콜입니다. 신뢰성이 있다는 뜻은 송/수신하는 데이터가 오류 없이 전송된다는 뜻입니다. RDT는 TCP가 UDP와 구분되는 가장 큰 특징입니다. RDT는 상위 계층에서 전송한 데이터가 손상되거나, 손실되지 않았다는 것을 보장한다는 뜻이고, 하위 계층에서 신뢰성을 보장할 수 없기에, 특정 계층에서 신뢰성을 보장한다면 그 상위 계층의 신뢰성은 모두 보장됩니다. Transport Layer에서는 신뢰성 있는 데이터 교환을 원하지만, 그 아래의 레이어에서는 신뢰성을 보장할 수 없기에, 신뢰성 있는 통신에 문제가 생길 수 있습니다. 이때 RDT 프로토콜을 이용하면 신뢰성을 확인할 수 있습니다. 그림을 보면 알 수 있..
UDP는 계속 설명했듯이 신뢰성 없는 통신보장이기에, 데이터 전송의 신속성이 더 중요한 경우에 사용됩니다. UDP는 다음과 같은 애플리케이션에서 사용됩니다. 멀티미디어 스트리밍 앱 DNS SNMP HTTP/3 애플리케이션 레이어에서 신뢰성과 congestion control을 추가했습니다. UDP segment header 우선 UDP 세그먼트는 UDP 프로토콜을 통해 전송되는 데이터의 작은 조각입니다. 이 조각은 Header와 Application data(payload)로 구성되어 있습니다. Header에는 다음과 같은 정보가 포함되어 있습니다. source port# 출발지 포트넘버로, 수신자는 데이터가 어떤 애플리케이션으로부터 온 것인지 식별할 수 있게 하는 정보입니다. dest port# 수신자..
Multiplexing과 Demultiplexing은 왜 필요할까요? 네트워크 통신에서 여러 개의 데이터를 효율적으로 처리하기 위해 필요합니다. 음 예를 들어서 설명해 보겠습니다. 예로는 편지 배달이 적절할 거 같습니다. 동구와 북구에는 작업반장이 한 명 있습니다. 각 작업반장은 각 구의 편지들을 모아서 우편배달부에게 전달해 주는 역할을 합니다. 여기서 작업반장이 하는 행동이 다중화입니다. 만약 이 다중화 작업이 없다면 작업반장은 각 구의 편지들을 하나 받고 전달하고, 이러한 작업을 하는데 굉장히 효율성이 떨어집니다. 만약이 우편배달부가 북구의 편지를 받아서 동구의 각 사람들에게 편지를 나눠줍니다, 이러한 작업을 역다중화입니다. 즉 쉽게 말하면, 다중화는 데이터를 보내기 전에 합치는 작업이고, 역다중화는..
Transport Layer Application Layer 바로 아래층에 위치한 계층입니다. 이름 그대로 데이터의 신뢰적인 전송을 담당하는 계층입니다. 송신자와 수신자 간의 통신을 제어하며, end-to-end 통신을 제공합니다. 역할은 다음과 같습니다. 출발지로부터 도착지까지 패킷이 제대로 전송될 수 있도록 합니다. Application Layer에서 만든 데이터를 일정한 크기로 자릅니다. Transport Layer Action Sender Application Layer로부터 메시지를 받음. 세그먼트 헤더 필드 값을 결정 세그먼트를 생성 IP를 통해 세그먼트를 전송 Receiver IP로 부터 세그먼트를 받음. 헤더 값을 체크 어플리케이션애플리케이션 메시지를 확인해서 오류를 검출하고 재조립하여 소..
Socket 컴퓨터 네트워크에서 프로세스 간 통신을 가능하게 해주는 소프트웨어 인터페이스이다. 서버와 클라이언트 간 통신에 사용된다. 클라이언트 -> 서버 (데이터 요청) 서버 -> 클라이언트 (응답) Application Layer와 Transport Layer 사이에 존재한다. 소켓은 주로 IP주소와 포트번호를 사용해서 데이터를 주고받는다. 소켓은 2가지의 타입이 있다. UDP 데이터의 신뢰성이나 연결 지향성을 보장하지 않습니다. 그렇기에 빠른 전송이 필요하거나, 데이터 손실이 허용되는 경우에 주로 사용됨. 실시간 멀티미디어 애플리케이션(음성, 비디오) 간단한 조회 및 상태 요청, 네트워크 게임 데이터 그램 단위로 전송. 비연결성 프로그램 (connect가 없음) 데이터 그램 단위로 교환하는 것을 알..
재한
'Computer Science/Network' 카테고리의 글 목록 (3 Page)