C#_TCP/IP

Today Jeeho Learned·2022년 11월 24일
0

C#

목록 보기
11/17
post-thumbnail

1. TCP/IP

컴퓨터 사이에 데이터를 주고받으려면 나름대로의 규칙이 필요하다. 어떠한 방법으로 어떠한 방식을 통해 전송할 것인가를 정해야 하고 그래야 데이터를 그 약속대로 보내고 받을 수 있을 것이다.

데이터를 주고받기 위한 이러한 규칙을 '프로토콜'이라고 부르며 세상에 존재하는 다양한 프로토콜 중 'TCP/IP'는 사실상 인터넷의 표준 프로토콜이다.

TCP/IP는 논리적으로 몇개의 계층구조로 나누어지는데 최상단 응용계층부터 링크(네트워크 접근) 계층까지 각 계층마다 층을 이루고 있으며 이러한 층을 'TCP/IP 스택'이라고 한다.

웹 브라우저에서부터 카톡과 같은 메신저나 유튜브 등 다양한 인터넷 서비스들이 TCP/IP프로토콜은 통해 이루어지고 있다.

  • 패킷
    인터넷상에서 주고 받는 '데이터'를 의미하며 본래 전송하고자 하는 데이터뿐만 아니라 TCP/IP 프로토콜을 위한 각 계층의 정보까지 포함하고 있는 형태를 말한다.

  • 링크계층
    WIFI나 모뎀, LAN케이블등 물리적인 연결 부분을 담당한다. 해당 계층에서 가장 먼저 패킷을 받으며 패킷에서 물리적 연결 정보를 제거 후 다시 인터넷 계층으로 패킷을 전달한다.

  • 인터넷계층
    패킷을 보낼때 패킷을 분할하거나 패킷을 받을 때 패킷을 재조립하는 계층이다. 이때 사용되는 규칙이 '인터넷 프로토콜' 즉, IP라고 하며 TCP/IP에서 IP가 여기에 해당한다. 또한 데이터를 보낼 때 데이터를 수신 할 목적지 정보도 함께 다루게 되는데 흔히 이 목적지 정보를 'IP 주소'라고 한다.

  • 전송계층
    실제 데이터를 전송하는 계층이다. 패킷을 보낼때 패킷 사이에 순서를 조정하거나 패킷 전송 중 유실되는 패킷이 있으면 해당 패킷을 재전송하는 등의 역할을 담당하면서 실제 데이터 전송에 필요한 연결성과 신뢰성을 제공한다. 물론 이러한 연결성과 신뢰성을 제공하려면 패킷 전송에 순서를 정하고 제대로 패킷이 전송되었느가를 확인해야 하는 과정을 거쳐야 하는데 이 과정에서 데이터가 전송되는 '속도'문제에 영향을 주게 된다.
    대용량의 패킷을 전송해야 하는 경우 TCP는 속도에 영향을 주더라도 안정적인 전송을 위해 꼭 필요한 부분이다. 하지만 한번에 보낼 수 있는 아주 작은 패킷을 전송하거나 데이터를 전송한 이후 상대방이 제대로 데이터를 수신했는가를 확인할 필요가 없는 경우라면 굳이 TCP의 역할이 필요하지 않는다. 바로 이러한 상황에 대비해 UDP(User Datagram Protocol)라는 프로토콜도 존재하는데 TCP가 가진 연결성/신뢰성을 제공하지는 않지만 덕분에 빠른 속도로 데이터를 전송할 수 있다는 특징이 있다. 대부분 인터넷이 아닌 내부적으로 데이터를 전송하는 경우에 많이 사용되는 프로토콜이다.

  • 응용계층
    애플리케이션 계층이라고도 하며 프로그램에 필요한 프로토콜이 정의되는 부분이다. 웹 브라우저의 경우 HTTP(Hyper Text Transfer Protocol)나 파일 전송 시 사용되는 FTP(File Transfer Protocol)등을 생각할 수 있다.
    물론 HTTP나 FTP등 잘 알려진 응용 계층 프로토콜 외에도 어떤 데이터 전송에 필요한 프로그램을 만드는 경우에 프로그램끼리 데이터를 주고받기 위한 규칙이 정의될 수 있는데 그 규칙도 응용 계층에서 사용되는 프로토콜로서 취급될 수 있다.

2. IP 주소

흔히 말하는 IP는 152,454,151 처럼 4개의 단위로 점을 통해 구분되는 숫자를 말하며 이러한 형태를 IPV4라고 한다. 인터넷을 사용하기 위해서는 이런 IP가 예외없이 반드시 필요하다. 하지만 지구 상에는 많은 컴퓨터와 스마트폰 등 인터넷을 사용하기 위한 수많은 기기들이 있는데 해당 기기마다 IP를 할당하기에는 할당할 수 있는 수가 너무 부족하여 DHCP라는 개념이 등장했다.

DHCP는 Dynamic Host Configuration Protocol로서 쉽게말해 하나의 IP를 인터넷 사용이 필요한 여러 개의 기기들이 서로 공유하며 사용하는 것을 형태를 말한다. 각 기기마다 독립된 IP를 모두 할당하지 않아도 되므로 IP부족을 어느 정도 해결하는데 큰 기여를 하고있다.

IP부족을 해결하기위한 또 다른 방안으로 IPv6라는 체계의 IP가 사용되기도 합니다. IPv4 체계의 주소보다 훨씬 긴 문자와 숫자가 결합된 주소 형태를 제공하는데 거의 무제한에 가까운 IP주소를 만들어 낼 수 있어서 DHCP를 사용하지 않더라도 지구 상에 존재하는 모든 기기에 독립된 주소를 할당하는 것이 가능하다.

3. 포트

상대 컴퓨터와 데이터를 주고 받으려면 IP주소뿐 아니라 포트번호라는 것도 필요하다. IP는 주소고 포트는 일종의 '문'과 같은 역할을 하는데 대략 0~65535 사이 값을 사용한다.

많이 알려진 프로그램의 경우 사용하는 포트는 미리 정해져 있는데 인터넷 웹브라우저의 경우 80번, FTP는 21번, 메일을 주고받는 SMTP의 경우에는 25번이 사용됩니다. 대부분 1~1023 사이의 번호가 정해진 번호로 사용되므로 네트워크를 이용하는 별도의 프로그램을 만드는 경우에는 이 범위의 포트 사용을 피하는 것이 좋다.

출처

https://lab.cliel.com/entry/C-TCPIP-%EC%86%8C%EC%BC%93-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-1

profile
기록해야 (살아)남는다 !

0개의 댓글