CS/Network
-
[Network]링크 계층의 다중 접속 프로토콜이란?CS/Network 2022. 7. 31. 22:28
1. 링크 계층 기본적으로 링크 계층의 역할은 한 노드에서 인접한 노드로 데이터그램을 직접 이동시키는 것이다. 1.1 링크 계층의 서비스 프레임화 : 링크 계층 프로토콜은 네트워크 계층 데이터그램을 링크상으로 전송하기 전에 링크 계층 프레임으로 캡슐화한다. 링크 접속 : 링크 계층의 프로토콜인 MAC(Medium Access Control, 매체 접속 제어)프로토콜은 링크상으로 프레임을 전송하는 규칙에 대하여 명시한다. 점대점의 단순한 상황에서는 송신자는 링크가 사용되지 않을 때마다 프레임을 전송할 수 있다. 만약 여러 노드가 링크를 공유하는 경우 MAC 프로토콜을 통해 여러 노드의 프레임 전송을 조정해야 한다. 신뢰적 전달 : 일반적으로 광섬유, 동축케이블, 꼬임쌍선을 이용하는 링크 계층에서의 오류는 ..
-
[Network]신뢰적인 데이터 전송과 TCP(2)CS/Network 2022. 7. 31. 22:27
[Network]신뢰적인 데이터 전송과 TCP UDP와 TCP의 가장 큰 차이는 TCP가 신뢰적인 데이터 전송을 기반으로 하는 프로토콜이라는 것이다. 이번 글에서는 신뢰적인 데이터 전송이란 무엇인 지 알아본 뒤 다음 글에서 본격적으로 TCP에 대 frog-in-well.tistory.com 지난 글에서는 신뢰적인 데이터 전송이 무엇인 지 알아보았다. 이번 글에서는 TCP에서 어떻게 신뢰적 데이터 전송이 이루어지는 지 알아보자. 1. TCP 1.1 TCP 연결 TCP는 애플리케이션 프로세스가 다른 프로세스로 메시지를 전달하기 전에 “핸드셰이크"를 하기 때문에 연결지향형 프로토콜이라고 한다. 세 방향 핸드셰이크를 통해 연결이 설정되면 두 애플리케이션 프로세스는 서로 데이터를 보낼 수 있다. 다시 설명하자면 ..
-
[Network]네트워크 계층의 포워딩CS/Network 2022. 7. 30. 13:42
0. 들어가기 전에 네트워크 계층의 근본적 역할은 매우 단순하다. 송신 호스트에서 수신 호스트로 패킷을 전달한다. 네트워크 계층의 기능은 라우터에 패킷이 도착하면 적절한 출력 링크로 전달하는 포워딩과 적절한 경로를 찾는 라우팅이다. 전송 계층을 다루며 인터넷 네트워크 계층은 최선형 서비스를 제공한다고 말했다. 최선형 서비스는 패킷을 보내는 순서대로 수신됨을 보장할 수 없고, 목적지까의 전송 자체도 보장될 수 없다. 종단 시스템 간 지연 또한 보장되지 않는다. 이러한 이유로 TCP가 패킷의 유실과 손상에 대한 대처를 철저하게 하는 것이다. 1. 라우터의 구조 입력 포트 입력 링크의 물리 계층 기능을 수행한다. 입력 링크의 반대편에 있는 링크 계층과 상호 작용을 하는 링크 계층 기능을 수행한다. 포워딩 테이..
-
[Network]TCP 계층 혼잡제어 완벽 정리CS/Network 2022. 7. 29. 21:46
0. 들어가기 전에 TCP 계층의 혼잡제어 알고리즘은 크게 3가지 단계이지만 조건과 작동이 꽤나 복잡하다. 게다가 블로그마다 설명이 제각각인 경우를 많이 보았다. 이번 글에서는 Computer Networking A Top-Down Approach, 7th의 TCP 혼잡제어 FSM을 보고 정리한 내용을 다룰 것이다. 1. TCP 혼잡제어 네트워크의 혼잡을 어떻게 감지하고 해결할 수 있을까? 타임아웃 또는 3중의 중복 ACK 발생에 의한 세그먼트 손실을 네트워크 혼잡의 발생으로 생각할 수 있다. 그리고 이에 따라 송신측의 윈도우 크기를 줄이면 된다. 즉 종단간의 혼잡을 제어하는 접근이다. 만약 네트워크 계층에서 직접적인 피드백을 준다면 송신자가 전송률을 증가시키거나 감소시킬 수 있을 것이다. 하지만 TCP..
-
[Network]TCP 연결 관리 - 3/4way handshakeCS/Network 2022. 7. 29. 20:11
TCP 연결관리 클라이언트 호스트의 애플리케이션이 서버 호스트와 연결을 원한다는 것을 클라이언트 TCP에게 알린다. 클라이언트 TCP는 서버와 연결 설정을 시작한다. +) ACK 세그먼트는 확인응답 세그먼트라는 의미이며, ACK 플래그를 의미하는 것이 아니다. ACK 플래그는 1비트이기 때문에 순서번호 +1 을 저장할 수 없다. ACK 플래그는 “수신한 세그먼트가 성공했다는 것을 확인 응답”하는 비트이다. 3-way에서 1단계에는 0으로 설정 / 2,3단계에서는 1으로 설정되어 있다. 3-way handshake SYN 세그먼트 전송 : 클라이언트 측 TCP는 SYN 플래그 비트를 1로 표시하고, 순서번호 필드에 임의의 숫자로 자신의 최초 순서번호를(clinet_isn) 설정하고 전송한다. 이 때, **..
-
[Network]신뢰적인 데이터 전송과 TCP(1)CS/Network 2022. 7. 28. 17:59
UDP와 TCP의 가장 큰 차이는 TCP가 신뢰적인 데이터 전송을 기반으로 하는 프로토콜이라는 것이다. 이번 글에서는 신뢰적인 데이터 전송이란 무엇인 지 알아본 뒤 다음 글에서 본격적으로 TCP에 대하여 다뤄보자. 1. 신뢰적인 데이터 전송 신뢰적인 채널에서는 데이터가 손상되거나 손실되지 않는다. 신뢰적인 채널에서 발생하는 일들을 차례대로 살펴보자. 일종의 프로토타입을 살펴보는 것이다. 1.1 완벽하게 신뢰적인 채널에서 데이터 전송, rdt1.0 만약 하위 채널이 완전히 신뢰적인 상황이라면 수신 측에서는 송신측으로 어떠한 피드백도 보낼 필요가 없다. 1.2 손실은 없으나 손상이 있는 채널에서 데이터 전송, rdt2.0 우리가 전화 통화를 하는 경우를 생각해보자. 상대가 말할 때, 어. 응. 음. 등의 피..
-
[Network]다중화와 역다중화란 무엇인가?CS/Network 2022. 7. 26. 09:03
0. 들어가기 전에… TCP가 제공하는 신뢰적인 데이터 전달 서비스는 무엇일까? TCP는 프로세스가 자신의 수신 버퍼로부터 읽은 데이터 스트림이 손상되지 않았으며 손실이나 중복이 없다는 것과 순서가 유지된다는 것을 보장한다. 즉, 수신자가 받은 바이트 스트림은 송신자가 전송한 것과 같은 바이트 스트림이다. 어떻게 이러한 서비스를 제공하는 것일까? 1. 트랜프스포트 계층 서비스 1.0 트랜스포트 계층과 애플리케이션 계층 트랜스포트 계층 프로토콜은 서로 다른 호스트에서 동작하는 애플리케이션 프로세스들 간의 논리적인 통신을 제공한다. 즉, 애플리케이션의 관점에서 프로세스들이 동작하는 호스트들이 직접 연결된 것처럼 보이도록 한다. 트랜스포트 계층 프로토콜은 네트워크 라우터가 아닌 종단 시스템에서 구현된다. 애플..
-
[Network]애플리케이션 계층과 HTTPCS/Network 2022. 7. 26. 09:03
1. 네트워크 애플리케이션 1.1 프로세스 간 통신 네트워크 애플리케이션이 통신할 때 실제 통신하는 것은 프로그램이 아닌 프로세스다. 같은 종단 시스템에서 실행되는 프로세스들의 통신은 운영체제에서 자세하게 다루는 내용이다. 서로 다른 종단 시스템에서 프로세스들은 네트워크를 통해 메시지를 교환한다. 클라이언트와 서버 네트워크 애플리케이션은 네트워크에서 서로 메시지를 보내는 두 프로세스로 구성된다. (ex. 웹 애플리케이션에서 클라이언트 브라우저 프로세스는 웹 서버 프로세스와 메시지를 교환한다. P2P 파일 공유 시스템에서 한 피어의 프로세스에서 다른 피어의 프로세스로 파일을 전송한다.) 네트워크를 통해 통신하는 프로세스는 클라이언트 프로세스와 서버 프로세스 중 하나로 이름 짓는다. 소켓 프로세스가 집이라면..