TCP/IP

NYC·2022년 2월 11일
0

소프트웨어 공학

목록 보기
3/3

TCP/IP

  • 보통 하나로 부르지만 TCP와 IP는 별개이다. 네트워크의 경우 계층이 정의되어있고 각 계층마다 하는 역할과 책임지는 영역이 나눠져있다.

  • TCP를 알기전에 네트워크 계층을 이해해보자.

네트워크 계층 (OSI 7)

  • OSI 7 계층은 국제표준화기구(International Standard Organization, ISO)에서 1984년에 발표한 네트워크 표준 모델이다.

  • 정보통신업체 사이의 장비 호환성을 위해서 1984년 국제표준화기구에서 발표한 표준 프로토콜이다.
    TCP/IP

  • OSI 7 계층에서 하위로 갈수록 하드웨어에 가까워지고, 상위 계층으로 갈 수록 소프트웨어에 가깝다.

  1. 1 layer (Physical Layer) : 시스템의 물리적 전기적 표현을 나타내는 층위이다. 케이블 종류, 무선 주파수 링크, 핀, 전압 등의 물리적인 요건을 의미한다.

  2. 2 layer (Data Link Layer) : 직접적으로 연결된 두 개의 노드 사이의 데이터 전송을 가능하게 한다.

  3. 3 layer (Network Layer) : 네트워크의 핵심인 라우팅(데이터가 가야할 길을 찾는 기능)의 대부분이 3 layer에서 작동한다. 여러 대의 라우터들을 바탕으로 데이터를 패킷 단위로 잘게 쪼개어 전송한다.

  4. 4 layer (Transport Layer) : 보내고자 하는 데이터의 용량과 속도, 목적지를 처리한다. 전송 계층에서 가장 대표적인 프로토콜은 전송 제어 프로토콜(TCP)이다. TCP는 인터넷 프로토콜(IP) 위에 구축되기 때문에 TCP/IP로 알려져있다.

  5. 5 layer (Session Layer) : 실제 네트워크 연결이 이뤄지며 두 대의 기기가 대화하기 위해서는 하나의 세션이 열려야한다. 세션 계층에는 프로세스간의 통신을 제어하고, 통신 과정이 진행될 때 동기화를 유지하는 역할을 한다.

  6. 6 layer (Presentation Layer) : 응용프로그램 형식을 네트워크 형식으로 변환하거나 그 반대의 경우가 일어나는 계층이다. 데이터를 안전하게 주고 받기 위해 암호화하고 복호화하는 과정이 일어난다.

  7. 7 layer (Application Layer) : 사용자가 네트워크에 접근할 수 있도록 인터페이스를 제공하며 사용자에게 가장 직접적으로 보이는 부분이다. 구글 크롬 같은 브라우저가 어플리케이션 계층에 속한다.

IP (Internet Protocol)

  • 각 패킷의 주소 부분을 처리해 패킷들이 목적지에 정확하게 도달하도록 하는 일을 담당한다.

IP의 특징

  1. 신뢰성(에러제어) 및 흐름제어 기능이 전혀 없다.
  2. 비연결성 데이터그램 방식을 채택하고 있으며 패킷의 완전한 전달(소실,중복,지연,순서바뀜 등이 없게하는 것)을 보장하지 않는다.
  3. IP 헤더 내 수신 및 발신 주소를 포함하고, IP 헤더 내 바이트 전달 순서는 최상위 바이트(MSB)를 먼저 보낸다.
  4. 모든 상위 계층 프로토콜(TCP,UDP,ICMP,IGMP 등)이 IP 데이터그램에 실려서 전송된다.

TCP (Transmission Control Protocol)

  • 통신하고자 하는 양쪽 단말(endpoint)이 통신할 준비가 되었는지, 데이터가 제대로 전송되었는지 등을 점검한다.
  • TCP(Trasmission Control Protocol)는 연결 지향 프로토콜으로서 클라이언트와 서버가 연결된 상태에서 데이터를 주고받는 프로토콜을 의미한다.
  • 클라이언트가 연결 요청(SYN 데이터 전송)을 하고, 서버가 연결을 수락하면 통신 선로가 고정되고, 모든 데이터는 고정된 통신 선로를 통해서 순차적으로 전달된다.
  • 신뢰성 있는 데이터의 전송을 위해 확인작업을 거치는데 TCP는 패킷을 성공적으로 전송하면(ACK) 라는 신호를 날리고 만약에 ACK 신호가 제 시간에 도착하지 않으면 Timeout이 발생하여 패킷 손실이 발생한 패킷을 다시 전송한다.

TCP의 특징

  1. 연결형 (connnection-oriented) 서비스로 연결이 성공해야 통신이 가능하다.
  2. 데이터의 경계를 구분하지 않는다. (바이트 스트림 서비스)
  3. 데이터의 전송 순서를 보장한다. (데이터의 순서 유지를 위해 각 바이트마다 번호를 부여)
  4. 신뢰성있는 데이터를 전송한다. (Sequence Number, Ack Number를 통한 신뢰성 보장)
  5. 데이터 흐름 제어(수신자 버퍼 오버플로우 방지) 및 혼잡 제어(패킷 수가 과도하게 증가하는 현상 방지)
  6. 연결의 설정(3-way handshaking)과 해제(4-way handshaking)
  7. 전이중(Full-Duplex), 점대점(Point to Point) 서비스
  8. UDP보다 전송속도가 느리다.

3 way handshake 방식 (SYN, ACK)

  • 서로의 통신을 위한 관문(port)을 확인하고 연결하기 위하여 3번의 요청/응답 후에 연결되는 과정이다.

연결 과정

  1. Client에서 Server에 연결 요청을 하기위해 SYN 데이터를 보낸다.
  2. Server에서 해당 포트는 LISTEN 상태에서 SYN 데이터를 받고 SYN_RCV로 상태가 변경된다.
  3. 요청을 정상적으로 받았다는 대답(ACK)와 Client도 포트를 열어달라는 SYN 을 같이 보낸다.
  4. Client에서는 SYN+ACK 를 받고 ESTABLISHED로 상태를 변경하고 서버에 ACK 를 전송한다.
  5. ACK를 받은 서버는 상태가 ESTABLSHED로 변경된다. 그리고 서로의 포트가 ESTABLISHED 되면서 연결이 되게 된다.
profile
Vision_NLP

0개의 댓글