OSI 7계층과 TCP/IP 모델의 전송계층에서 사용되고 있는 프로토콜인 TCP 와 UDP는 송신자와 수신자를 연결하는 통신 서비스를 제공하고 IP에 의해 전달되는 패킷의 오류를 검사하며 재전송 요구 제어등을 담당하고 있는 계층이다.
💬 TCP
데이터를 중요하게 생각하며 확실하게 주고 받고 싶은 경우 TCP 를 사용하게 된다. 통신을 하게된다면 서로의 컴퓨터끼리 '보냈습니다' 와 '받았습니다' 라고 서로 확인을 하면서 데이터를 주고 받으며 통신의 신뢰성을 가지게 된다.
TCP 를 사용하는 예 ) 웹, 메일, 파일 공유 등과 같이 데이터를 누락시키고 싶지 않은 서비스는 TCP를 사용한다.
특징
- 연결 지향 방식으로 패킷 교환 방식을 사용한다.
- 3-way-handshake, 4-way-handshake 과정을 통해 연결을 하고 끊는다.
- 흐름 제어와 혼잡 제어 그리고 오류제어를 제공한다.
- UDP 보다 속도가 느리다
- 전 이중 (Full-Duplex), 점대점(Point to Point)
- 전 이중(Full - Duplex) : 전송이 양방향으로 동시에 일어날 수 있다.
- 점대점(Point to Point) : 각 연결이 정확히 2개의 종단점을 가지고 있다
TCP 헤더 정보
필드 | 크기 | 내용 |
Source Port, Destination Port | 16 | TCP로 연결되는 가상 회선 양단의 송수신 프로세스에 할당되는 포트 주소 |
Sequence number | 32 | 송신자가 지정하는 순서 번호, 전송되는 바이트 수를 기준으로 증가 SYN = 1 : 초기 시퀀스 번호, ACK 번호는 이 값에 1을 더한다 SYN = 0 : 현재 세션의 이 세그먼트 데이터의 최초 바이트 값의 누적 시퀀스 번호 |
ACK Number | 32 | 수신 프로세스가 제대로 수신한 바이트 수를 응답하기 위해 사용된다 |
Data Offset(Header Length) | 4 | TCP 세그먼트의 시작 위치를 기준으로 데이터의 시작 위치를 표현한다 |
Reserved | 6 | 사용을 하지는 않지만 나중을 위한 예약 필드이며 0으로 채워진다 |
Flag Bit | 6 | SYN, FIN, ACK 등의 제어 번호 |
Window | 16 | 수신 윈도우의 버퍼 크기를 지정할 때 사용, 0 이면 송신 프로세스의 전송 중지 |
Checksum | 16 | TCP 세그먼트에 포함되는 프로토콜 헤더와 데이터에 대한 오류 검출 용도 |
Urgent Pointer | 16 | 긴급 데이터를 처리하기 위함, URG 플래그 비트가 지정된 경우에만 유효하다 |
TCP의 흐름 제어와 오류제어
수신자와 송신자의 메세지 처리 속도 차이를 해결하기 위한 방법으로는 데이터 전송 보장을 위해 다양한 방식의 프로토콜을 사용하고 있다.
흐름을 제어하는 방법으로는 크게 Stop-And-Wait, Go-Back-N, Selective Repeat이 있다.
🖥TCP의 흐름제어, 오류제어(Stop-And-Wait, Go-Back-N, Selective Repeat)
전송계층에 해당하는 프로토콜인 TCP는 흐름제어, 오류제어, 혼잡제어를 제공하는데 흐름제어를 하는 방법을 알아보자 💬 Stop - And - Wait 컴퓨터 네트워크 설정에서 재전송을 기반으로 하는 신뢰
latewalk.tistory.com
TCP의 혼잡제어
네트워크 내에 패킷의 수가 과도하게 증가하는 현상을 혼잡이라고 한다. 이를 방지하고 제거하는 기능이다.
https://latewalk.tistory.com/158
🖥 TCP 혼잡 제어(AIMD, Slow Start, Fast Recovery, Fast Retransmit)
TCP의 혼잡 제어는 흐름 제어나 오류 제어와는 다르게 라우터를 포함한 넓은 범위의 전송 문제를 다루게 된다 💬 AIMD(Additive Increase / Multiplicative Decrease) 처음엔 패킷을 하나씩 보내고 문제가 발생
latewalk.tistory.com
TCP의 3-way-handshake, 4-way-handshake
TCP는 Sender와 Receive 와 연결하는 방식에 신뢰적인 전송방식을 위해
연결 시 : 3 -way-handshake를 사용한다
연결 해제 시 : 4-way-handshake를 사용한다
🖥 3-way Handshake / 4-way Handshake
💬 TCP 인터넷 상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜이다. 특징 신뢰적이고 연결 지향성 서비스를 제공하며 패킷의 추적 및 관리를 하는 역할이다. 연결형
latewalk.tistory.com
💬 UDP
전송계층의 비연결 지향적 프로토콜이다. 비연결 지향적이한 데이터를 주고 받을때 연결 절차를 거티지 않고 발싱자가 일방적으로 데이터를 발신하는 방식을 의미한다. 연결 과정이 없기 때문에 TCP보다는 빠른 전송을 할 수 있지만 데이터 전달의 신뢰성은 떨어진다. UDP는 발신자가 데이터 패킷을 순타적으로 보내더라도 이 패킷들은 서로 다른 통신 선로를 통해 전달 될 수 있다. 먼저 보낸 패킷이 느린 선로를 통해 전송 될 경우 나중에 보낸 패킷보다 늦게 도착할 수 있으며 최악의 경우 잘못된 서놀로 전송되어서 유실의 우려가 존재한다. 이럴 경우 TCP와는 다르게 UDP는 중간에 패킷이 유실이나 변조가 되어도 재전송이 없다.
UDP의 특징
- 비연결형 서비스로 연결 없이 통신이 가능하며 데이터그램 방식을 제공한다
- 데이터 경계를 구분한다.
- 정보를 주고 받을때 정보를 보내거나 받는다는 신호 정차를 거치지 않는다.
- 신뢰성 없는 데이터를 전송하게 된다 때문에 데이터 재전송과 데이터 순서 유지를 위한 작업이 없다
- 의미있는 서버 구축을 위해서는 패킷 관리를 따로 해주어야 한다
- 패킷 오버헤드는 적어서 네트워크 부하가 감소된다
- 상대적을 TCP보다 전송속도가 빠르다
💬 TCP 와 UDP의 비교
공통점
- 포트 번호를 이용해서 주소를 지정
- 데이터 오류 검사를 위해 체크섬이 존재한다
차이점
TCP | UDP | |
연결 방식 | 연결형 서비스 | 비연결형 서비스 |
패킷 교환 방식 | 가상 회선 방식 | 데이터그램 방식 |
전송 순서 | 전송 순서 보장 | 전송 순서가 바뀔 수 있다 |
수신 여부 확인 | 수신 여부를 확인한다. | 수신 여부를 확인하지 않는다 |
통신 방식 | 1:1 통신에 이용한다 | 1:1 / N:N / 1:N 모두 사용 가능 |
신뢰성 | 높다 | 낮다 |
속도 | 느리다 | 빠르다 |
'CS > 🖥 네트워크' 카테고리의 다른 글
🖥 HTTP 와 HTTPS (0) | 2023.09.25 |
---|---|
🖥 지연(Delay)과 손실(Loss) - 처리, 큐잉, 전송, 전파 지연 (0) | 2023.09.18 |
🖥 TCP 혼잡 제어(AIMD, Slow Start, Fast Recovery, Fast Retransmit) (1) | 2023.09.16 |
🖥TCP의 흐름제어, 오류제어(Stop-And-Wait, Go-Back-N, Selective Repeat) (0) | 2023.09.16 |
🖥 3-way Handshake / 4-way Handshake (0) | 2023.09.15 |