[TIL] WEB : TCP/IP 개념 이해하기

은경·2022년 3월 16일
0

[WEB/HTTP]

목록 보기
6/7

1. TCP/IP 의 개념


TCP/IP란 Transmission Control Protocol(전송제어 프로토콜)/Internet Protocol(인터넷 프로토콜) 의 약자로서, 인터넷에서 사용되는 표준 통신 프로토콜이다.
서로 다른 시스템을 가진 컴퓨터들을 서로 연결하여 데이터가 의도된 목적지에 닿을 수 있도록 보장해주는 통신 규약이다.
이를 이용해서 컴퓨터를 연결하는 체계를 이더넷(Ethernet)이라고 부른다.

TCP/IP는 하나의 프로토콜이 아닌 TCP와 IP를 합쳐서 부르는 말인데, 이것을 사용하겠다는 것은 IP주소 체계를 따르고 IP Routing을 이용해 목적지에 도달하며 TCP의 특성을 활용해 송/수신자의 논리적 연결을 생성하고 신뢰성을 유지할 수 있도록 하겠다는 것을 의미한다.

2. TCP (Transmission Control Protocol)


TCP(전송 제어 프로토콜)은 컴퓨터가 다른 컴퓨터와 데이터 통신을 하기 위한 규약을 의미한다.
이 프로토콜은 데이터를 교환하는 기기 간 데이터의 무결성(정확성)과 전달의 신뢰성을 보장하기 때문에 거의 모든 애플리케이션 수준의 프로토콜(FTP, SSH, HTTP 등)에서 사용하고 있다.

  • 세계 통신표준으로 개발된 OSI 7 Layer에서 4번째 계층인 전송 계층(Transport Layer)에서 사용하는 규약

  • 데이터 패킷에 일련의 번호를 부여함으로써, 데이터 손실을 찾아내서 교정하고, 순서를 재조합하여 클라이언트에게 전달할 수 있게 해준다.

  • 통신하고자 하는 양쪽 단말에 통신할 준비가 되었는지, 데이터가 도중에 변질/손실 되었는지, 수신자가 얼마나 받았고 빠진부분은 없는지 등을 점검한다.


📌 TCP의 특징

  1. 연결 설정
    TCP는 전화를 거는 것처럼 상대와 연결을 설정하고 통신을 시작한다.
    이 과정을 3-way Handshake 라고 한다.

  2. 신뢰성 보장과 흐름 제어(Flow Control)
    송신자는 자신이 한번에 얼마나 보낼 수 있는지, 수신자는 자신이 데이터를 어디까지 받았는지 끊임없이 확인함.
    TCP 헤더의 Window size를 이용해 한번에 받고 보낼 수 있는 데이터의 양을 정함. window는 일정량의 데이터를 뜻하며 사이즈는 수신자가 정한다.
    이외에도 헤더파일엔 목적지주소, 오류 검출 및 복원, 실제데이터, 확인응답 등이 포함되는데 UDP와 구분되는 것이 확인응답(Acknowledge)파일이다.
    이것으로 송수신 시 계속 확인응답을 보내어 잘 갔는지, 잘 왔는지 확인을 하여 데이터 신뢰도가 높다.
    하지만 데이터 용량이 증가하여 수신속도가 떨어진다는 단점이 있다.
    자세한 과정 읽어보기

  3. 혼잡 제어(Congestion Control)
    송신하는 데이터의 속도가 수신하는 속도보다 느려지게 되면 송/수신자의 중간에 있는 네트워크 기기(라우터)에 데이터들이 몰려서 네트워크 회선이 그 부하를 감당하지 못하는 일이 일어난다. 라우터의 저장용량이 넘어서면 저장되지 못한 데이터들은 손실되며 버려지는 패킷을 통해 전력이 낭비된다.
    이를 방지하기 위해 송신자는 연결 초기에 데이터 송출량을 낮게 잡고 보내면서 수신자의 수신을 확인하며 데이터 송출량을 조금씩 늘린다.
    그러면 현제 네트워크에서 가장 적합한 데이터 송출량을 확인할 수 있게 되며 이것을 Slow Start라고 한다.


3. IP(Internet Protocol)


컴퓨터간에 데이터를 전송하기 위해서는 목적지(주소)가 필요한데 그 역할을 해주는 매개체가 바로 IP 주소. 예를 들면 각 장치들의 전화번호 라고 생각하면 된다. 173.194.126.240와 같이 3개의 마침표로 나뉘어진 숫자로 표시된다. IP는 TCP와는 달리 데이터의 재조합이나 손실여부 확인이 불가능하며, 패킷들이 목적지에 정확하게 도달하도록 하는 일을 담당한다.

IP주소는 하드웨어 고유의 식별번호(ip가 전화번호라면 MAC주소는 주민등록번호)인 MAC주소와 다르게 임시적으로 다른 주체(통신사)에게 받는 주소이므로 바뀔수 있다.

데이터를 전송할 때는 하나의 완전한 데이터를 바로 보내지 않고 분할 작업을 거치게 되는데, 이때 분할되어 작아진 데이터 단위를 패킷(Packet)이라고 한다.
전송 과정이 실패했을 때 처음부터 다시 데이터를 보내는 건 소모적이며 데이터가 완전히 전송될 때까지 다른 데이터가 대기해야 할 수도 있기 때문에 패킷은 송신 측에서 분할 전송 후에 수신 측에서 완전한 데이터로 재결합하여 사용한다.

4. TCP 🆚 IP


TCP와 IP는 각기 다른 목적을 가진 프로토콜이지만 인터넷 통신을 위해서는 대부분 두 프로토콜을 함께 사용하기 때문에 흔히 TCP/IP라고 부른다. TCP가 데이터의 추적을, IP가 배달을 처리한다고 보면 된다. (상호 보완 목적)

IP만 사용하게 된다면 패킷을 받을 대상을 확인하지 않고 패킷을 전달하거나 패킷이 유실될 수 있기 때문에 TCP와 함께 사용하며, TCP는 위와 같은 문제를 방지하기 위해 3 Way-HandshakePORT와 같은 메커니즘을 이용한다.

4-1. 🤝 3 Way-Handshake

데이터 교환을 위해 송/수신기기는 서로 동기화되어야 하는데,
TCP는 송/수신 측에서 데이터를 주고받기 전에 논리적인 접속(=커넥션)을 확립하여 양측 모두 데이터를 전송할 준비가 되었다는 것을 보장한다.

커넥션을 확립하기 위해서는 동기화 목적의 패킷을 교환해야 한다.
패킷에 담긴 정보는 TCP 세그먼트 헤더에서 관리 되며 TCP는 이러한 정보들을 바탕으로 3번의 통신을 거쳐 데이터 전송을 위한 사전 작업을 진행한다.

SYN(synchronize sequence numbers; 일련번호를 일치시키다)
ACK(acknowledgement; 응답을 확인하다)

3 Way-Handshake 과정
1. Client → Server: SYN = 1, ACK = 0과 함께 ISN을 무작위로 설정하여 Server로 전달
2. Server → Client: ACK NO에 클라이언트 ISN + 1을 할당하고 SYN = 1, ACK = 1과 함께 새로운 ISN을 무작위로 설정하여 Client로 전달
3. Client → Server: SEQ NO에 서버 ACK NO 할당, ACK NO에 서버 ISN + 1을 할당 후 SYN = 0, ACK = 1과 함께 Server로 전달

이러한 과정을 모두 마치게 되면 커넥션이 확립되고 두 컴퓨터는 인증된 SEQ NO와 ACK NO를 통해 데이터를 전송할 수 있습니다. 이제 TCP의 커넥션을 통해 패킷이 유실되거나 잘못된 순서로 전달되어도 패킷 재전송, 재구성이 가능하기에 컴퓨터 간 더욱 안정적으로 데이터를 교환하게 되는 것입니다.
출처 : https://tecoble.techcourse.co.kr/post/2021-10-02-tcp-ip/

4-2. 🚢 PORT

데이터가 실제로 도달해야 하는 어느 지점(항구), IP 주소를 통해 컴퓨터의 위치를 파악했다면 그 컴퓨터에서 구동되고 있는 애플리케이션의 주소를 파악하는 것이 포트의 역할. TCP 세그먼트 헤더에서 관리한다.
ex) HTTP는 80번, HTTPS는 443번, SMTP는 25번

4-3. TCP/IP Model


TCP/IP ModelOSI 7 Layers Model을 참고하여 구축된 모델이다.
네트워크상에서 정보 교환을 위한 여러 과정을 모듈화하여 계층으로 나눈 구조.

  • 응용 계층 (Application Layer)
    OSI 7 계층에서 세션, 프레젠테이션, 애플리케이션에 해당(5, 6, 7계층)
    high-level 프로토콜 담당, 애플리케이션의 데이터 전송
    (프로토콜 : HTTP, FTP, 텔넷, DNS, SMTP)

  • 전송 계층 (Transport Layer)
    OSI 7 계층에서 전송계층에 해당.
    신뢰성, 흐름 제어, 데이터 수정 담당.
    데이터의 정확한 전송이 필요하면 TCP
    빠른 속도의 전송이 필요한 통신에서는 UDP를 주로 사용.
    통신 노드 간의 연결을 제어하고, 자료의 송수신을 담당.
    ( 프로토콜 : TCP, UDP)

  • 인터넷 계층 (Network Layer)
    OSI 7 계층의 네트워크 계층에 해당.
    네트워크를 통해 패킷을 전송, IP주소를 정의하고 라우팅 기능을 담당.
    (프로토콜 : IP, ARP, RARP, ICMP, OSPF)

  • Network Access Layer

    • 데이터 링크 계층 (Data Link Layer)
      네트워크 계층으로 부터 받은 패킷 헤더에 MAC 주소 정보를 가지고 있는 헤더를 추가하여 프레임을 만들고, 프레임을 하위계층인 물리 계층으로 전달.
      (프로토콜 : 이더넷, 토큰링, PPP)

    • 물리 계층 (physical layer)
      모델의 최하단 계층으로써 비트 단위의 실질적인 데이터 전송 담당
      기본 네트워크 하드웨어 전송기술들로 구성

기존 TCP/IP Model은 4계층으로 분류했지만 현재 사용되고있는 TCP/IP Model은 Network Access Layer를 physical layer과 Data Link Layer 계층으로 나눈 5계층 모델을 주로 사용한다고 한다.

5. TCP/IP의 장단점


장점

  • TCP/IP는 소형과 대형 네트워크 모두에서 사용할 수 있는 장비 식별·주소 지정 체계를 가짐 -> 점점 커지는 네트워크에 적절.
  • 라우팅에 용이함. 장비보다는 네트워크를 연결하는데 초점이 맞춰져있고, 서로 다른 네트워크에 있는 장비 간에 데이터 교환이 가능.
  • TCP/IP는 하부 네트워크에 독립적이기 때문에 근거리 네트워크(LAN), 무선(WLAN), 원거리 네트워크(WAN) 같은 모든 하위 계층 네트워크에서 운영이 가능함.
  • 표준과 개발 절차가 공개 되어있어 누구나 참여 할 수 있다.

단점

  • 3 Way-Handshake, 승인 메커니즘, 혼잡 제어 메커니즘은 네트워크가 불안정 할 때 대역폭과 시간 낭비를 초래.
  • IP 주소는 실제 주소와 연결 되는 경우가 있어서 IP추적 등의 보안 위험성이 따른다.
  • 블록체인과 같은 대규모 네트워크를 완벽하게 지원할 수 없다.


참고 자료 (Reference)


http://wiki.hash.kr/index.php/TCP/IP
https://tecoble.techcourse.co.kr/post/2021-10-02-tcp-ip/
https://namu.wiki/w/TCP
https://aws-hyoh.tistory.com/entry/TCPIP-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0
https://velog.io/@rosewwross/TCPIP
https://www.tokenpost.kr/forum/free/20824

profile
Python 서버 개발자

0개의 댓글