cs스터디-6

전재우·2021년 4월 14일
0

2021-03-31

3월의 마지막 스터디

TCP / IP 프로토콜

프로토콜, 어떤 뜻인가요?

프로토콜을 알기 전에 '노드 (Node)'의 개념을 알아한다.

네트워크를 이루고 있는 각각의 컴퓨터나 기기를 노드라고 하는데요!

로컬 네트워크(LAN)에 연결된 각 PC를 노드라고 할 수 있습니다. 노트는 연결되어있고, 그 연결을 매개하는 다리 역할을 하는 것이 라우터(router)입니다. 노드들 간에 데이터를 교환하려면 데이터가 어떤 방식으로 전송되어야하는 공통의 약속이 필요합니다.

따라서, 그 약속을 프로토콜이라고 하는데요!**

어떤 데이터를 전송해야한다를 규정한 약속이라고 생각하시면 됩니다.

TCP/IP 프로토콜을 검색했을 때의 정의를 보면,

"정보기기 사이, 컴퓨터끼리 또는 컴퓨터와 단말기 사이 등에서 정보교환이 필요한 경우, 이를 원활하게 하기 위하여 정한 여러 가지 통신규칙과 방법에 대한 약속. 즉, 통신의 규약을 의미" 라고 되어있습니다.

TCP/IP

란 TCP/IP는 컴퓨터간 통신을 위해서 만들어 졌습니다.

  • TCP/IP 는 가장 최근에 발명된 컴퓨터와 컴퓨터간의 지역네트워크(LAN) 혹은 광역네트워크(WAN)에서 원할한 통신을 가능하도록 하기 위한 통신규약(Protocol) 으로 정의할 수 있다.
    가장 인기있는 인터넷 서비스인 WWW, EMAIL, TELNET, FTP등 대부분이 TCP/IP 기반에서 만들어져있다.
  • 인터넷으로 연결된 수많은 컴퓨터와 통신을 위해서 TCP/IP를 선택한 이유는 그 개방성에 있다. ⇒ 하드웨어, 운영체제, 접속매체에 관계없이 동작할수 있다는점 때문에, 인터넷 통신을 위한 핵심으로 선택되었다.

TCP/IP 란 이름에서 알수 있듯이, TCP/IPTCPIP 의 2개의 프로토콜로 이루어져 있는데, 통상 IP 프로토콜 위에 TCP 프로토콜이 놓이게 되므로 TCP/IP 라고 부르게 되었다.

IP

  • node(단말기)와 node - 이해하기 쉽게 컴퓨터와 컴퓨터 - 간의 데이타 패킷을 전송하기 위해서는 각 node 에 (우편번호와 같은)주소를 필요로 한다.
  • IP는 4바이트로 이루어진 주소번호를 사용하여서 각각의 node 를 구분하고, 목적지를 찾아가게 된다. 우리는 이를 IP Address라고 하며, "192.168.100.100" 형식으로 사용한다.
  • IP 는 Internet Protocol 의 줄임말이다. 숫자로된 인터넷주소를 사람이 식별하는건, 그리 쉽지 않기 때문에, IP주소를 인간이 식별하기 쉬운 Domain 네임으로 변환시켜주는 Domain Name 서비스를 사용한다.

TCP(Transmission Control Protocol)

  • 서버클라이언트간에 데이타를 신뢰성있게 전달하기 위해 만들어진 프로토콜이다.

  • 데이타를 전송하기 전에 데이타전송을 위한 연결을 만드는 연결지향 프로토콜이다.

    신뢰성 ⇒ 데이터는 네트워크선로를 통해 전달되는 과정에서 손실되거나 순서가 뒤바뀌어서 전달될수 있는데, TCP는 손실을 검색해내서, 이를 교정하고 순서를 재조합할수 있도록 해준다.

TCP/IP 프로토콜 구조

  • 네트워크 접근 계층: 물리적 네트워크를 통한 실제 데이터 송수신 담당. 물리 주소 사용.-
  • 인터넷 계층: 큰 네트워크를 구성하려면 물리 주소와 무관한 단일 주소 지정방식이 필요한데, IP 주소가 이런 요구 사항을 만족합니다. IP 주소의 유일성하드웨어 독립성 덕분에 TCP/IP 프로토콜은 다양한 네트워크 기술과 하드웨어에서 작동할 수 있으며, 이를 통해 전 세계적인 네트워크인 인터넷(Internet)을 만들 수 있게 되었습니다. 네트워크 접근 계층의 도움을 받아 데이터를 목적지 호스트까지 전달(라우팅), IP 주소 사용
  • 전송 계층:  최종 통신 목적지를 지정하고 오류없이 데이터를 전송하는 역할. 포트번호 사용
  • 응용 계층: 전송 계층을 기반으로 한 다수의 프로토콜과 응용 프로그램을 포괄

IP주소는 통신에 참여하는 호스트를 유일하게 지정하는 방법을 제공하지만, 실제 통신을 하려면 전송경로를 결정하고 그에 따라 데이터를 전달하는 절차가 필요한데 이를 라우팅이라고 부릅니다. 라우팅데이터를 목적지까지 전달하는 일련의 작업을 가리키는 용어로, 라우팅에 필요한 정보를 수집하는 작업과 라우팅 정보를 기초로 실제 데이터를 전달하는 작업을 포함합니다.

인터넷 계층의 IP가 제공하는 전송 서비스는 최선을 다하지만(best-effort) 신뢰성은 없다는 특징이 있습니다. 즉, 데이터에 문제가 생기면 목적지에 도달하지 못하는 상황이 발생할 수 있고, 목적지에 도달해도 실제 데이터의 내용이 손상됐을 가능성도 있습니다.

전송 계층에서는 이러한 데이터 손실 또는 손상을 검출해 잘못된 데이터가 목적지에 전달되는 일을 방지합니다.

TCP의 특징

  • 연결형(connection-oriented) 프로토콜: 연결 설정 후 통신 가능
  • 신뢰성 있는 데이터 전송: 데이터를 재전송
  • 일대일 통신(unicast)
  • 데이터 경계 구분 안함 : 바이트 스트림(byte-stream) 서비스

UDP의 특징

  • 비연결형(connectionless) 프로토콜: 연결 설정 없이 통신 가능
  • 신뢰성 없는 데이터 전송: 데이터를 재전송하지 않음
  • 일대일 통신(unicast), 일대다 통신(broadcast, multicast)
  • 데이터 경계 구분: 데이터그램(datagram) 서비스


클라이언트-서버 모델

네트워크 프로그램은 일반적으로 클라이언트-서버 모델로 작성합니다. 클라이언트-서버 모델을 한 컴퓨터에서 실행되는 두 프로그램에 적용할 경우에는 다양한 프로세스 간 통신(IPC, Inter-Process Communication) 기법을 사용해 데이터를 주고 받을 수 있습니다. 반면, 네트워크로 연결된 컴퓨터에서 실행되는 두 프로그램에 적용할 경우에는 반드시 통신 프로토콜을 사용해야만 데이터를 주고받을 수 있습니다.

서로 다른 호스트에서 실행되는 두 프로그램이 상호 접속하는 경우를 가정해보면, 접속이 성공하려면 반드시 상대 프로그램이 실행 중이어야 합니다. 그러나 이와 같이 동시 접속 모델을 사용하면 타이밍 문제 때문에 접속이 실패할 확률이 높아지고, 결과적으로 통신할 수 없는 경우가 자주 발생하게됩니다.

반면, 클라이언트-서버 모델에서는 이와 같은 문제가 자연스럽게 해결됩니다. 한 프로세스가 먼저 실행하여 대기하고, 다른 프로세스가 나중에 실행하여 접속하면 됩니다. 클라이언트가 서버에 접속하려면 서버의 IP 주소와 포트 번호를 알고 있어야 합니다. 반면, 서버는 클라이언트의 주소를 미리 알 필요가 없습니다. 클라이언트가 보낸 패킷에는 클라이언트의 주소 정보가 모두 들어 있기 때문에, 서버는 이 정보를 이용해 언제든지 해당 클라이언트에 데이터를 보낼 수 있습니다.

profile
코린이

0개의 댓글