[C#]21.네트워크 프로그래밍

안녕하세요 유랑입니다.



이번 시간에는 네트워크 프로그래밍에 대해서 알아보겠습니다.

프로그래머로써 프로임워크 내부에서 일어나는 일들을 알아볼까요?




1. 네트워크 프로그래밍



네트워크에서 데이터를 주고받기 위해서는 그 네트워크에서 사용되는 '프로토콜'을 따라야 합니다.

프로토콜이란? 컴퓨터들이 네트워크를 통해 데이터를 주고받기 위한 통신규약이라고 생각하시면 됩니다.

다양한 종류의 프로토콜 중에서 인터넷의 통신 프로토콜로 사용되는 TCP/IP에 대해서 알아보겠습니다.




1-1) TCP/IP



TCP/IP는 다음 그림과 같이 네 개의 계층으로 나눌 수 있으며,

계층이 포개어져 있는 형태 때문에 이것을 TCP/IP 스택이라고도 부릅니다.


- 링크 계층 => 물리적 데이터 전송(케이블, Wi-Fi, 모뎀 등)에 사용되던 부분을 제거하고 인터넷 계층에 넘깁니다.

- 인터넷 계층 => 패킷을 수신해야 할 상대의 주소를 지정, 패킷에 대해서는 적절한 크기로 분할

- 전송 계층 => 송신층과 수신층 간의 연결성을 제공하며, 신뢰할 수 있는 패킷 전송 서비스를 제공

- 애플리케이션 계층 =>  응용프로그램 프로토콜들이 정의되는 곳







1-2) TCP vs UDP



게임이나 프로그램을 사용할 때 TCP와 UDP에 대해서 많이 들어보셨을거에요.

하지만 이 둘이 어떻게 다른지는 가물가물 하실텐데 그 기능은 다음과 같습니다.

TCP는 신뢰성이 있지만 데이터를 실시간 처리하기에는 애매하고,

UPD는 신뢰성은 없지만 데이터를 실시간 처리할 때는 유용합니다.


- TCP(Transmission Control Protocol)

=> 연결형 서비스를 지원하는 전송계층 프로토콜

=> 인터넷 환경에서 기본으로 사용한다.

=> 높은 신뢰성

=> 전이중(Full-Duplex) 통신

=> 1:1 통신 방식


- UDP(User Datagram Protocol)

=> 비연결형 서비스를 지원하는 전송계층 프로토콜

=> 보내는 쪽에서 일방적으로 데이터를 전달하는 통신 프로토콜

=> 비신뢰성

=> 1:1, 1:N, N:N 통신 방식







1-3) TcpListener와 TcpClient - ㉠코드작성



TcpListener와 Tcpclient는 .NET 프레임워크가 TCP/IP 통신을 위해 제공하는 클래스입니다.

TCpListener 클래스는 서버 애플리케이션에서 사용되며, 클라이언트의 연결 요청을 기다리는 역할이며

TcpClient는 서버 애플리케이션과 클라이언트 애플리케이션 양쪽에서 사용됩니다.

코드를 작성해 서버와 클라이언트 환경을 구성해서 네트워크 통신을 해보겠습니다.

먼저 서버에 해당하는 코드입니다.










클라이언트에 해당하는 코드입니다.









코드 작성이 끝났으면 각가 빌드 후 실행 파일을 만들어 주세요.

명령 프롬프트를 통해서 EchoServer와 EchoClient를 실행시킬텐데요.








1-4) TcpListener와 TcpClient - ㉡EchoServer



서버에 필요한 IP는 IPCONFIG 명령어를 통해서 확인해 주겠습니다.






명령어를 이용해 실행파일이 있는 폴더로 이동 후 실행파일 이름과 IP를 작성하여 서버를 열어줍니다.








1-5) TcpListener와 TcpClient - ㉢TcpClient



이번에는 클라이언트를 실행시켜 주겠습니다.

방법은 서버와 동일하나 포트, 서버 IP, 메시지란이 추가되었네요.

그림을 참고하여 입력시켜주세요.

그러면 서버와의 통신이 되는걸 확인할 수 있습니다^^









2. 마무리



오늘은 네트워크 프로그래밍에 대해서 배워보았습니다.

서버가 어떻게 만들어지는지 알게되어 유익한 시간이었던것 같네요.

서버프로그래밍 역시 만만치 않다는것도 실감할 수 있었습니다.

오늘도 고생하셨습니다.

감사합니다.




수업자료: https://github.com/YouRang12/-Tistory-CShop---Basic





댓글

Designed by JB FACTORY