[IP주소 체계 요약]
- IP 주소는 컴퓨터 네트워크에서 각 호스트를 식별하는 데 사용되는 고유한 식별자입니다.
- IPv4는 32비트 주소 체계이며, 총 4,294,967,296개의 주소를 가질 수 있습니다.
- IPv6는 128비트 주소 체계이며, 총 340,282,366,920,938,463,463,374,607,431,768,211,456개의 주소를 가질 수 있습니다.
- IPv4 주소는 점으로 구분된 4개의 8비트 숫자로 표시되며, 예를 들어 192.168.0.1과 같은 형식입니다.
- IPv6 주소는 16진수로 구성된 8개의 16비트 블록으로 표시되며, 예를 들어 2001:0db8:85a3:0000:0000:8a2e:0370:7334와 같은 형식입니다.
- IP 주소는 지정된 네트워크와 호스트 부분으로 나뉘며, 네트워크 부분은 호스트가 속한 네트워크를 식별하고, 호스트 부분은 해당 네트워크에서 호스트를 식별합니다.
- IP 주소 체계는 계층적인 구조를 가지며, 이를 이용해 라우터는 패킷을 다른 네트워크로 전송할 때 어떤 경로를 선택할지 결정합니다.
- IP 주소는 IP 프로토콜을 사용하는 모든 장치에서 사용됩니다. 이는 인터넷, 이더넷, Wi-Fi 등의 다양한 네트워크에서 모두 사용됩니다.
[포트에 대한 요약]
- 포트는 네트워크 통신에서 프로세스 또는 서비스를 식별하는 데 사용되는 번호입니다.
- 포트 번호는 16비트 숫자이며, 0에서 65535까지의 범위를 가집니다.
- 포트는 IP 주소와 함께 사용되며, IP 주소는 네트워크의 위치를 식별하고, 포트는 특정 프로세스 또는 서비스를 식별합니다.
- 포트 번호는 특정 프로토콜과 연관되어 있습니다. 예를 들어, HTTP 프로토콜은 80번 포트를 사용하며, FTP 프로토콜은 21번 포트를 사용합니다.
- 클라이언트는 서버에 연결할 때 목적지 포트 번호를 지정하며, 서버는 해당 포트 번호에 연결된 프로세스나 서비스를 실행합니다.
- 네트워크에서 전송되는 패킷은 출발지 IP 주소와 출발지 포트 번호, 그리고 목적지 IP 주소와 목적지 포트 번호를 가지고 있습니다.
- 포트는 소프트웨어에서 열리고 관리되며, 포트를 열기 위해 사용되는 프로토콜은 보안적인 이유로 필터링이나 차단될 수 있습니다.
- 널리 사용되는 포트는 대개 잘 알려진 포트라고 불리며, 이러한 포트 번호는 IANA(Internet Assigned Numbers Authority)에 의해 할당됩니다.
[TCP/IP 동작 요약]
- TCP/IP는 서버/클라이언트 방식으로 동작합니다.
- TCP/IP 통신을 위해서는 먼저 서버가 서비스를 시작하고, 클라이언트가 접속할 수 있도록 준비합니다.
- 클라이언트가 서버에 접속하면 서버와 클라이언트는 동등한 입장에서 데이터를 주고받을 수 있게 됩니다.
- 데이터는 서버나 클라이언트 양쪽에서 주고받을 수 있으며, 둘 사이의 용무가 끝나면 접속을 종료합니다.
[TCP/IP 데이터 전송 과정 요약]
- 데이터 생성 및 전송 준비
- 어플리케이션은 데이터를 생성하고 전송할 호스트와 포트 번호를 결정합니다.
- 데이터는 세그먼트라는 작은 단위로 나누어져 TCP 헤더를 붙여 전송 준비를 합니다.
- IP 패킷 생성
- TCP 세그먼트는 IP 패킷으로 캡슐화됩니다
- IP 패킷에는 출발지 IP 주소, 목적지 IP 주소, 프로토콜 정보 등이 포함됩니다.
- 라우팅
- IP 패킷은 라우터를 통해 목적지로 전달됩니다.
- 라우터는 IP 주소를 기반으로 최적의 경로를 선택하고 패킷을 전달합니다.
- TCP 세그먼트 재조립
- 목적지 호스트에서 IP 패킷을 받으면, TCP 세그먼트가 재조립됩니다.
- TCP 헤더를 통해 세그먼트를 원래 데이터로 재구성합니다.
- 어플리케이션 전달
- 재구성된 데이터는 목적지 어플리케이션에 전달됩니다.
- 어플리케이션은 데이터를 처리하고 필요한 경우 응답을 생성합니다.
- 응답 전송
- 응답은 동일한 과정을 거쳐 송신 호스트에 전송됩니다.
- 응답 패킷은 출발지와 목적지를 반대로 지정하여 전송됩니다.
TCP/IP 프로토콜은 패킷 손실이 발생했을 때 이를 처리하기 위해 다음과 같은 방법을 사용합니다.
- 재전송
- 송신자는 일정 시간동안 수신자로부터 ACK(응답)를 받지 못하면 해당 패킷을 다시 전송합니다.
- 수신자는 중복된 패킷을 받아도 중복을 감지하고 폐기합니다.
- 흐름 제어
- 수신자는 자신이 처리할 수 있는 양의 데이터 양을 송신자에게 알려줍니다.
- 송신자는 이를 기반으로 자신이 전송하는 데이터 양을 제어합니다.
- 혼잡 제어
- 패킷이 손실되거나 네트워크의 혼잡이 발생하면 송신자는 혼잡 윈도우 크기를 줄이고 패킷 전송율을 감소시킵니다.
- 이를 통해 전체 네트워크의 혼잡을 방지하고 안정적인 데이터 전송을 유지합니다.
따라서 TCP/IP 프로토콜은 패킷 손실이나 오류가 발생하더라도 이를 처리하고 안정적인 데이터 전송을 보장할 수 있습니다.
'C# 프로그래밍' 카테고리의 다른 글
[C#] LINQ (0) | 2023.04.14 |
---|---|
[C#] 네트워크 프로그래밍 (0) | 2023.04.06 |
[C#] TCP/IP 네트워크 (1) (1) | 2023.03.28 |
[C#] async 한정자와 await 연산자 (0) | 2023.03.28 |
[C#] task (2) (0) | 2023.03.27 |