본문 바로가기
반도체 그 다음 학문/컴퓨터 네트워크

컴퓨터 네트워크 TCP( Transmission Control Protocol )

by 전컴반 2021. 12. 19.
반응형
TCP ( Transmission Control Protocol )

 

- 프로세스간 통신이다. 여기서 프로세스란 프로그램이라 볼 수 있다

- 연결형 서비스를 제공한다

- 전이중 방식의 양방향 가상 회선을 제공한다

- 신뢰성 있는 데이터 전송을 보장

- 프로세스들에게 Port Number를 부여한다. 프로세스 넘버라는 용어는 이미 OS에서 사용하고 있기 때문에 사용하지 않는다.

- 클라이언트는 자신의 포트 번호를 임의로 정하고 서버의 프로세스에게도 임의로 번호를 부여한다. 하지만 관습적으로 어떤 기능은 고정되어 사용한다.

 

 

저작권침해의사없음

 

 

TCP 전송 계층의 주요 기능 

 

- 흐름 제어 :  수신 호스트가 윈도우 하단 값을 조정할 수 있다 

- 오류 제어 : 데이터 변형과 분실 시 재전송에 의한 오류를 제어한다.

- 분할과 병합 : 세그먼트를 분할하고 다시 조립한다.

 

 

멀티플렉싱

 

1. 상방향 멀티플렉싱 

- 다수의 전송 계층에 하부의 네트워크 계층에서 연결이 형성

- 네트워크 계층에서 만들어지는 가상 회선 연결의 개수를 줄일 수 있다

 

2. 하방향 멀티플렉싱

- 하나의 전송 연결 설정 포트에 다수의 가상 회선을 할당

- 전송 속도를 높이고 개별 가상 회선을 할당하여 효과적인 통신 가능

 

 

TCP 연결 

 

연결 설정

- Conn_Req : 프로세스의 연결 설정 요구한다

- Conn_Ack : 연결 수락을 의미한다

 

 

연결 해제

1. 일방적 연결 해제 방식

- 데이터를 보내고 있는데 일방적으로 해지하는 것으로 보는 프로세스는 보내는 순간 연결을 해지하고 받는 프로세스는 받는 순간 연결을 해지한다.

- UDP에서 많이 사용

 

2. 점진적 연결 해제 방식

- 두 프로세서 모두 Diss_Rep를 전송한다. 다시 말해 합의하에 해제한다

- TCP에서 많이 사용

 

왼(일방적) 오(점진적)

 

TCP 전송 시 윈도우 

 

수신 윈도우

- 수신단에서 수신할 수 있는 버퍼의 크기

- 송신단은 수신 윈도우보다 작게 데이터를 전송하면 오버플로우가 생기지 않는다.

 

Silly 윈도우 신드롬

- 송신단에서 전송할 데이터의 생성이 늦어질 때 발생

- 효율이 떨어진다

- 예를 들어, 송신단에서 데이터를 쪼개서 보내다가 타임 슬롯에 남은 게 1 btye만 남았다면 이 1byte를 보내기 위해 TCP 헤더(20byte)와 IP 헤더(20byte)를 붙여서 보내야 하는 비효율적인 상황이 발생한다. 이와 같은 비효율을 다루기 위해 Nagle 알고리즘이 나왔다.

 

Nagle 알고리즘

- 버퍼를 이용하여 최대 크기의 세그먼트를 누적하여 출력 버터에 저장되면 그때 전송을 시작한다.

- ACK가 올 때까지 기다리는 동안 데이터를 채운다.

- 제일 처음에 보는 것과 마지막에 보내는 데이터는 이 알고리즘에 포함되지 않는다. 

 

 

TCP 헤더 구조 (세그먼트)

 

 

Source / Destination Port

- TCP로 연결되는 가상 회선 양단의 송수신 프로세스에 할당된 네트워크 포드 주소

 

Sequence Number

- 송신 프로세스가 지정하는 순서 번호

 

Acknowledgment Number

- 수신 프로세스가 제대로 수신한 바이트의 수를 응답하기 위해 사용

 

Data Offset

- TCP 세그먼트가 시작되는 위치를 기준으로 데이터의 시작 위치, TCP 헤더의 크기

 

Reserved

- 예약 필드

 

Window

- 수신 윈도우의 버퍼 크기를 지정하기 위해 사용

 

Flags ( URG, ACK, PSH, RST, SYN, FIN )

- URG : Urgent Pointer 필드가 유효한지를 나타낸다

- ACK : Acknowledgment Number 필드가 유효한지를 나타낸다

- PSH : 현제 세그먼트에 데이터를 상위 계층에 즉시 전달하도록 지시할 때 사용

- RST : 연결의 리셋이나 유효하지 않은 세그먼트에 대한 응답용으로 사용

- SYN : 연결 설정 요구를 의미하는 플래그 비트, 가상 회선 연결을 설정하는 과정에서 사용

- FIN : 한쪽 프로세스에서 연결 종료 요구하기 위해 사용

 

Checksum

- 오류 검출을 위해 사용

 

Urgent Pointer

- 긴급 데이터를 처리하기 위해 사용

 

혼잡 제어

 

ECN 기능

- 라우터가 송신 프로세스에 혼잡 발생을 알려주어 스스로 트래픽을 완화하는 기술이다.

- 3 계층에선 회선을 사용하지 않으나, 4 계층에선 ECE기능을 사용하여 데이터량 자체(윈도우 사이즈)를 줄인다. 

 

포트 번호

 

- TCP와 UDP가 상위 계층에 제공하는 주소 표현 방식

- 소켓의 형태로 조합되어 고유한 프로레스를 정의한다. IP주소와 포트 번호를 조합하면 특정 호스트의 특정 프로세스를 확인할 수 있다.  

- 클라이언트(요청)가 서버(대기)에 연결할 때의 프로세스 간 통로로 사용한다. 

 

Well known port

- 관용적으로 용하는 port 번호

반응형

댓글