[포스코x코딩온] KDT-Web-8 9주차 회고1 TCP/IP Deep Dive

Yunes·2023년 8월 28일
0

[포스코x코딩온]

목록 보기
25/47
post-thumbnail

TCP/IP 란 무엇일까?

TCP/IP 는 서로 다른 시스템을 가진 컴퓨터들을 서로 연결하고, 데이터를 전송하는데 사용 되는 통신 프로토콜 의 집합을 말한다.

층별로 통신이 이루어지는데 이때 사용되는 통신 규약을 프로토콜 이라고 한다.

ex) TCP 프로토콜 / HTTP 프로토콜 / WIFI 프로토콜 ...

보통 TCP/IP 4계층 하면 application - transport - internet - network interface 레이어라고 부르는데 보다 상세히 나누면

OSI 7계층 구조 로 application - presentation - session - transport - network - data link - physical 레이어로 나눌 수있다.

저계층부터 한번 알아보자.

Network Interface Layer

업로드중..

network interface layer 는 물리적으로 직접 연결된 네트워크 기기 간에 데이터의 전송을 제어하는 역할을 한다.

즉, 전기 신호나 전파 같은 물리적 신호가 도달하는 범위 내에서 데이터를 전송하기 위한 규칙을 정한 계층이다.

네트워크 인터페이스 계층 에 속한 물리적인 장비중 NIC (Network Interface Card)이 있는데 PCP/IP 중 data link, physical layer 에 해당하는 network interface layer 는 이 NIC 카드 에 장착되어 있다.

이런 하드웨어를 전송매체로 연결하여 유선 LAN 이나 무선 LAN 같은 물리 네트워크를 만들 수 있다.

유선 LAN : ethernet, LAN 선을 통해 통신
무선 LAN, (Wireless LAN, WLAN) : 안테나를 통해 통신. IEEE802.11 -> wireless fidelity => WIFI

OSI 7계층에서 data link layerphysical layer 를 합쳐놓은 계층을 말한다.

Data Link Layer 는 왜 필요한가?

Data Link Layer (L2) 와 Physical Layer (L1) 이 Network Interface Layer 를 구성한다.

데이터 링크 계층은 물리 계층을 보완한다. 물리 계층이 맡고 있는 단순 디지털 통신 기능에서 나아가 통신 기기 간에 신뢰적 연결을 통한 LAN 구성 기술과 관련된다.

데이터 링크 레이어는 디지털 통신을 오류없도록, 데이터 흐름을 매끄럽게 하는 Data Link Control, DLC 기능통신매체 공유를 조화롭게 하는 기능인 MAC (Media Access Control) 을 제공한다.

logical address (논리 주소) = IP address / network address / network layer address / protocol address

phycial address (물리 주소) = LAN address / MAC address / link layer address / hardware addresss / data-link layer address

Media Access Control, MAC 은 복수의 장치간 통신에서 충돌이 발생하지 않기위해 사용한다. 구체적으로는 전송받은 헤더에 있는 물리주소와 NIC 의 물리주소를 비교하여 다를시 폐기처분한다.

논리 주소만으로는 데이터 통신이 제대로 이루어지지 않고 물리 주소가 필요하다.

물리주소로 디지털 통신을 잘 하고 있는데 IP 같은 논리주소가 왜 필요했을까?

초기 미국에서 네트워크망이 깔릴때 각 구역마다 저마다의 주소체계, protocol 을 갖고 있었다. 그런데 점차 네트워크를 사용하는 인구가 많아지다 보니 universal 하게 사용할 수 있는 protocol address 를 필요로 하게 되었고 이게 IP address 가 되었다.

그럼 물리주소는 왜 필요할까?

Ethernet 이나 WIFI 같은 Shared Link 특성상 A 에서 B 로 통신을 하려고 해도 Broadcast Channel 이라서 해당 링크를 사용중인 모든 디바이스에 데이터가 전달될 수 있다. 이때 수령측을 특정화할 필요가 있었고 물리주소인 MAC address 를 통해 전달하고자 했던 수령측인지 여부를 확인할 수 있게 되었다.

Media Access Control, MAC 의 기능

Network Interface Layer 의 통신은 NIC 카드에 부착된 Data Link LayerPhysical Layer 를 통해 이루어지는데 이 디지털 통신은 유선 LAN, 무선 LAN 을 통해 이루어진다고 확인했다.

그런데 이 두가지 방식 모두 공유매체를 사용하는데 공유 매체는 broadcast 채널이다. 어느 한 단말에서 신호를 보내면 이곳 저곳에 모두 신호가 도달하여 충돌이 불가피하다.

이 충돌을 피하기 위한게 MAC 을 사용하는 이유다.

앞에서 MAC 은 복수의 장치간 통신에서 충돌이 발생하지 않기 위해 사용한다고 했다.

이때 구체적으로는

  1. 전송시점을 잡아준다.
  • 충돌하는 시점을 최소화하는 방향으로 전송시점을 잡는다.
  1. 충돌이 발생한다면
  • 충돌이 발생했다는 사실을 어떻게 알까?

이때 Random Access Protocol 랜덤 접근방식Controlled Access protocol 통제 접근 방식 을 사용한다.

MAC 을 사용하는 목적이 복수의 장치가 공유매체를 사용할때 질서를 생성시키는 것에 있다.

그래서 중앙 통제자를 통해 질서를 유지하거나 controlled access protocol 중앙 통제자 없이 충돌을 줄이는 방식을 random access protocol 사용한다.

random access protocol 랜덤 접근 방식

  • 어떤 station 도 다른 station 보다 우월하지 않고 다른 station 을 control 할 권한도 없다.

  • 어떤 station 도 다른 station 이 보내는 것에 허가, 불허가를 할 수 없다.

  • 보낼 데이터가 있다면 보낼지 여부는 정해둔 프로토콜의 절차를 따른다.

이에 여러 방식이 있는데 그중 몇가지 방식을 찾아봤다.

CSMA (Carrier Sense Multiple Access) 는 회의를 할때 누가 말하고 있으면 말하지 않는 것과 같은 방식을 말한다.

그런데 CSMA 는 충돌시 어떻게 할지 정해지지 않았다.

그래서 CSMA/CD 방식으로 collision detection 충돌 감지 기능을 추가하여 유선 LAN 방식에서 성공적으로 활용했고

CSMA/CA 방식으로 collision avoidance 충돌 회피 기능을 통해 무선 LAN 방식에서 CD 가 잘 되지 않는 부분으로 인해 충돌이 잘 감지 되지 않으니 애초에 충돌이 되지 않도록 사전에 무언가 도입하여 충돌을 회피하고자 했다.

Carrier : 공유매체
Sense : 매체의 상태를 체크, 공유 매체가 다른 device 에 의해 사용중인지 체크

controlled access protocol 통제 접근 방식

controleld access protocol 은 broadcast 내에 있는 모든 device 가 매체 사용에 대해 동등한 권한을 갖던 random access protocol 과 달리 중앙에 통제자가 하나 존재한다.

각 station 은 중앙 통제자에게 채널 사용을 예약하거나 모든 station 에게 의사를 물어보고 채널을 사용하는 방식을 사용할 수 있다.

Internet Layer 에 대해 알아보자

Internet Layer 는 데이터 패킷의 라우팅과 논리적인 주소를 지정하는데 사용된다.

IP 프로토콜이 Internet Layer 에서 작동하며 패킷의 출발지와 목적지 IP 주소를 사용해 라우팅을 수행한다. ARP 같은 프로토콜도 Internet Layer 에서 동작한다.

IP, Internet Protocol : Datagram 의 포멧을 정의하는 메인 프로토콜

... 무슨 소리인지 좀더 찾아봤다.

ARP, Address Resolution Protocol

주소문제 해결 프로토콜로 IP 주소는 Router Table 을 통해 확인가능하나 물리주소를 알기 위해 IP 주소와 물리 주소간 1:1 mapping 을 해주는 프로토콜을 말한다.

통신을 할때 물리주소와 (Mac address) 논리주소 (IP address) 가 있다고 설명했다. 논리주소인 IP 주소는 라우팅 테이블에 명시되어 있어서 송신측은 수신측의 IP 주소가 무엇인지 알 수 있다.

그러나 송신측은 수신측의 물리주소가 무엇인지 모른다. 또한 shared link 를 통해 데이터를 broadcast 하여 link 에 연결되어 있다면 누구나 데이터를 일단 받을 수 있다.

다만 IP 가 다르다면 폐기하고 IP 가 동일하다면 수신측에 제대로 도착한 것이다. 이때 ARP 프로토콜에 의해 요청을 통해 자신의 물리주소를 응답하라고 전달한다.

[이미지 : ARP 패킷의 구조]

처음 송신할때 물리주소를 모르니 Destination hardware address 가 비어있으나 수신후엔 송신측의 hardware address, protocol address 를 모두 아니 broadcast 할 필요 없이 unicast 방식으로 송신측에 패킷을 되돌려준다.

이를 통해 IP 주소와 물리주소를 매핑해준다.

Transport Layer

transport layer 는 송신된 데이터를 수신측 애플리케이션에 확실히 전달하기 위해 사용된다.

  • 데이터의 신뢰성과 흐름제어를 관리한다.

  • local host 와 다른 remote host 사이 2개의 application layer 에서 process to process 통신을 제공한다.

  • application layer 에 서비스를 제공하는데 필수적이며 network layer 로부터 서비스를 받는다.

process : 실행중인 프로그램

TCP

TCP (Transmission Control Protocol)

  • 데이터 전송에 신뢰성을 더하기 위해 데이터를 segment 라는 단위로 분할하고 전송 속도를 조절한다
  • 데이터가 제대로 전달되지 않았을 때 재전송한다.
  • UDP 와 비교시 속도가 느리다.
  • 흐름제어 : 송신측과 수신측의 데이터 처리 속도를 조절하여 수신자의 오버플로우 방지
  • 혼잡제어 : 정보 소통량 많을시 패킷을 조금만 전송하여 혼잡 현상이 일어나는 것을 막는다.

TCP 동작 순서

세션을 시작 - 데이터 전송 - 세션을 종료
1. 세션을 시작 (3-way handshake)

세션을 시작할 때 3-way handshake 라고 불리는 네트워크 연결 설정하는 과정을 거친다.

이는 TCP/IP 프로토콜을 이용해 통신을 하는 응용 프로그램이 데이터를 전송하기 전에 미리 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미한다.


먼저 client 는 server 에게 연결 요청을 보낸다. (SYN)

접속 요청을 받은 server 가 요청을 수락했고 client 도 포트를 열어달라는 메시지를 전송한다. (ACK, SYN)

client 는 수락을 확인하였다는 메시지 ACK 를 보내 연결을 맺는다.

요약하면 다음과 같다.

이렇게 미리 연결을 보장하기 때문에 신뢰성있는 데이터 전송을 지원하는 연결지향형 프로토콜이라고 한다.

  1. 데이터를 전송

연결이 되면 올바른 순서로 데이터 전송을 보장한다.

  1. 세션을 종료

세션을 종료하여 연결을 해제하는 과정을 4-way handshake 라고 한다.

먼저 client 가 server 에게 종료하겠다고 FIN 플래그를 전송한다. 서버가 FIN 플래그로 응답하기 전까지 연결을 유지한다.

Server 는 일단 알겠다고 ACK 메시지를 보내고 자신의 통신이 끝날 때까지 기다린다.

Server 는 진행하던 통신이 종료되었으면 연결 종료에 동의한다고 FIN 플래그를 client 에게 전송한다.

client 는 알겠다며 ACK 메시지를 전송한다.

요약하면 다음과 같다.

전체 TCP 동작 과정은 다음과 같다.

UDP

UDP, User Datagram Protocol

  • 비연결성 프로토콜로 데이터의 신뢰성은 낮지만 속도가 빠르고 간편하다.
  • 데이터그램 단위로 데이터를 전송하며 순서, 데이터 신뢰성은 보장되지 않는다.
  • 데이터 전송에 관련된 작업이 단순하다.
  • 흐름제어나 혼잡 제어 메커니즘이 없어서 오버헤드가 적다.

TCP 와 UDP 를 비교하면 다음과 같다.

application layer

Application Layer

  • Application : 사용자가 네트워크에 접근할 수 있도록 해주는 계층이며 사용자 인터페이스 ,전자우편, DB 관리 등의 서비스를 제공한다. HTTP, DNS
  • Presentation : 운영체제의 한 부분으로 입력 또는 출력되는 데이터를 하나의 표현 형태로 변환한다. JPEG
  • Session : 통신 장치 간의 상호작용을 설정하고 유지하며 동기화한다. SSH
  • 송신 호스트에서 데이터를 보내기 위해 4계층부터 1계층까지 순차적으로 거치며 데이터를 캡슐화 한다.

  • 계층 하나를 거칠 때마다 헤더가 하나씩 늘어나는데 각 헤더는 무의미하게 늘어만 가는 데이터가 아니라 각 계층에서 주입하는 유의미한 정보다. 이는 해당 패킷을 수신 호스트까지 효율적으로 전송하기 위한 정보들을 담고 있다.

헤더

  • TCP/IP 를 사용하는 애플리케이션이 사용하는 프로토콜에 필요한 정보를 헤더로 담는다. (L5)
    • HTTP 통신의 경우 HTTP헤더
  • 송,수신지 포트번호 (L4)
  • 송,수신지 IP주소 (L3)
  • 송,수신지 MAC주소 (L2)

Application -> Network Interface layer 로 가면서 헤더가 추가되는 과정을 Encapsulation 이라고 하며 그 반대를 Decapsulation 이라고 한다.

profile
미래의 나를 만들어나가는 한 개발자의 블로그입니다.

0개의 댓글