TCP 프로토콜

  • 전송 제어 프로토콜 ( Transmission Control Protocol, TCP )
  • 연결 지향 프로토콜
  • 인터넷에 연결된 컴퓨터에 실행되는 프로그램 간에 통신을 안정적으로, 순서대로, 에러없이 교환할 수 있게 해주는 프로토콜
  • UDP보다 안전하지만 느리다

TCP 프로토콜 구조

  • Source Port : 출발지 포트번호
  • Destination Port : 도착지 포트번호
  • Sequence Number :
  • Acknowledgment Number
  • Offset :헤더의 길이를 4로 나눈 값 
  • Reserved  
  • TCP Flags - 연결 지향을 위한 값 
  • Window : 남아있는 TCP 버퍼 공간이 얼마나 남았는지 알려줌 ( "나 얼마만큼 남았으니까 이만큼 보내", 신뢰성 )
  • Checksum 
  • Urgent Pointer : 어디서부터가 긴급 데이터인지 위치 알려주는 값 ( Urgent flag 와 세트 )
  • TCP Options ( variable length, optional ) : IP 프로토콜의 옵션과 마찬가지로, 4Byte씩 총 10개 옵션이 붙을 수 있다. ( TCP 일반적인 길이 20Byte이며 최대 60Byte까지 늘어날 수 있음 )

 

TCP 플래그

TCP Flags - 연결 지향을 위한 값 

  • U : 긴급 비트( urgent bit ), 보내는 데이터의 우선순위가 높다고 지정 
  • A : 승인 비트( ACK bit ), 연결 승인이나 데이터 전송 승인 등 대답을 해주는 플래그
  • P : 밀어넣기 비트( Push bit ), 원래 TCP 버퍼가 일정 크기 이상 쌓여야 패킷을 추가적으로 전송하는데 그것과 상관 없이 계속 밀어넣겠다는 플래그
  • R : 초기화 비트( Reset bit ), 상대방과 연결되어있는 상태에서 문제가 발생하여 연결 상태를 새로고침하는 플래그
  • S : 동기화 비트( Synk bit ), 상대방과 연결을 시작할 때 사용하는 플래그로 양쪽 상태를 동기화 
  • : 종료 비트 ( fin bit ), 연결을 끊을 때 사용하는 플래그 

 

TCP를 이용한 통신과정

연결 수립 과정

  • TCP를 이용한 데이터 통신을 할 때 가장 먼저 수행되는 과정 ( 프로세스와 프로세스 연결 )
  • 3Way Handshake 
    1. 클라이언트가 서버에게 요청 패킷을 보내고 ( Syn )
    2. 서버가 클라이언트의 요청을 받아들이는 패킷을 보내고 ( Ack & Syn )
    3. 클라이언트는 이를 최종적으로 수락하는 패킷을 보냄 ( Ack

 

  • 단순히 패킷만 보내면서 연결하는 과정

 

데이터 송수신 과정

  • TCP를 이용한 데이터 통신을 할 때 단순히 TCP 패킷만을 캡슐화해서 통신하는 것이 아닌 페이로드포함한 패킷을 주고 받을 때의 규칙
  • 연결 수립 과정에서 3way handshake로 클라이언트가 ACK 보내면서 연결 완료
  • 데이터 송수신 과정 
    1. 보낸 쪽에서 또 보낼 때는 SEQ번호와 ACK번호가 그대로다.
    2. 받는 쪽에서 SEQ번호는 받은 ACK번호가 된다.
    3. 받는 쪽에서 ACK번호는 받은 SEQ번호 + 데이터의 크기 

  • 패킷에 데이터를 담아 위 규칙대로 데이터 송수신을 합니다.
  • 연결이 종료될 때는 프로그램에 따라 상이하다. ( ACK + FIN 동시에 보내거나, ACK 보내고 FIN 보내거나 )

 

TCP 상태전이도

TCP 연결 상태의 변화

  • 실선 : Client의 상태 변화
  • 점선 : Server의 상태 변화

주 상태 종류

  • LISTEN : 포트 번호를 열어둔 상태 ( 서버 쪽에서 해당 포트 번호를 프로그램이 사용하고 있는 상태 )
  • ESTABLISHED : 연결이 서로 수립 된 상태

 


다음 강의를 정리했습니다.

https://www.youtube.com/watch?v=cOK_f9_k_O0&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=21

https://www.youtube.com/watch?v=cOK_f9_k_O0&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=22

https://www.youtube.com/watch?v=Ah4-MWISel8&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=23

https://www.youtube.com/watch?v=yY0uQf0BTH8&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=24

'Computer Science > 네트워크' 카테고리의 다른 글

UDP 프로토콜  (0) 2023.11.09
4계층 ( Transport Layer )  (0) 2023.11.09
IPv4 조각화  (0) 2023.11.09
라우팅 테이블  (1) 2023.10.28
먼 컴퓨터와 통신하는 방법 : IPv4 & ICMP ( 3 Layer )  (3) 2023.10.28

UDP 프로토콜

  • 사용자 데이터그램 프로토콜 ( User Datagram Protocol )
  • UDP의 전송 방식은 단순해서 신뢰성이 낮고, 데이터그램 도착 순서가 바뀌거나중복되거나, 통보 없이 누락되기도 한다.
  • 일반적으로 오류의 검사와 수정이 필요 없는 프로그램에서 수행

UDP 프로토콜 구조

  • Source Port : 출발지 포트번호
  • Destination Port :목적지 포트번호
  • Length : UDP 프로토콜 헤더 + 페이로드 크기
  • Checksum : 프로토콜(헤더)에 이상이 있는지 확인

 

UDP 프로토콜을 사용하는 프로그램

 

DNS 서버

  • 도메인에 대한 IP 주소를 알려주는 서버

tftp 서버

  • UDP를 이용해서 파일 전송하는 서버

RIP 프로토콜 

  • 라우터들끼리 서로 정보를 공유해서 최신 라우팅 테이블 정보를 알 수 있게 해주는 프로토콜 중 하나
  • UDP를 사용해서 정보 공유

 


다음 강의를 정리했습니다.

https://www.youtube.com/watch?v=3MkI3FBFzX8&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=19

'Computer Science > 네트워크' 카테고리의 다른 글

TCP 프로토콜  (3) 2023.11.10
4계층 ( Transport Layer )  (0) 2023.11.09
IPv4 조각화  (0) 2023.11.09
라우팅 테이블  (1) 2023.10.28
먼 컴퓨터와 통신하는 방법 : IPv4 & ICMP ( 3 Layer )  (3) 2023.10.28

여러 프로세스 중에서 통신하고 싶은 특정 프로세스와 통신하는 방법  ( Client - Server 간의 통신 )

4 계층 프로토콜

4계층에서 하는 일

  • 전송 계층은 송신자의 프로세스와 수신자의 프로세스연결하는 통신 서비스를 제공한다.
  • 연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어, 다중화와 같은 편리한 서비스를 제공한다.
  • TCP : 연결 지향 전송 방식을 사용하는 전송 제어 프로토콜 ( TCP )
  • UDP : 비연결 지향, 단순한 전송에 사용되는 사용자 데이터그램 프로토콜 ( UDP

 

포트 번호

  • 특정 프로세스와 특정 프로세스가 통신을 하기 위해 사용한다. ( 프로세스가 쓰는 주소
  • 하나의 포트는 하나의 프로세스만 사용 가능하다.
  • 하나의 프로세스가 여러 개의 포트 번호를 사용하는 것은 가능하다.
  • 포트 번호는 일반적으로 정해져 있지만 무조건 지켜야 하는 것은 아니다. 

Well-Known 포트

  • 잘 알려진 프로그램들이 어떤 포트 번호를 쓰는지 지정되어 있는 것
  • ~ 1023 

Well-Known Port

 

Registered 포트

  • 예약된 포트
  • 대표적으로, DB 서버 
  • 1024 ~ 49151

 

Dynamic 포트

  • client가 쓸 수 있는 포트
  • 일반 사용자들이 사용하는 포트
  • 49152 ~ 65535

Dynamic 포트

 

프로그램의 연결 정보

  • 명령어  : netstat -ano 
  • 현재 포트 활성 여부를 나타내는 활성 연결 테이블

다음 강의를 정리했습니다.

https://www.youtube.com/watch?v=tG0ldt4sBzY&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=16&ab_channel=%EB%94%B0%EB%9D%BC%ED%95%98%EB%A9%B4%EC%84%9C%EB%B0%B0%EC%9A%B0%EB%8A%94IT

'Computer Science > 네트워크' 카테고리의 다른 글

TCP 프로토콜  (3) 2023.11.10
UDP 프로토콜  (0) 2023.11.09
IPv4 조각화  (0) 2023.11.09
라우팅 테이블  (1) 2023.10.28
먼 컴퓨터와 통신하는 방법 : IPv4 & ICMP ( 3 Layer )  (3) 2023.10.28

조각화란?

  • 큰 IP 패킷들이 적은 MTU( Maximum Transmisson Unit : 데이터 최대 전송 단위 )를 갖는 링크를 통하여 전송되기 위하여 여러 개의 작은 패킷으로 쪼개어 전송하는 것
  • 일반적으로 조각화되면, 최종 목적지에 도착할 때까지 재조립되지 않는다.
  • IPv4발신지 뿐만 아니라 중간 라우터에서도 IP 조각화가 가능
  • IPv6 IP 단편화발신지에서만 가능

 

First Fragmentation

  • MTU3300Byte
  • 이 때, DataIPv4의 크기인 20Byte를 뺀 3280Bytes 단위로 쪼개진다.
  • MF( More Fragment ) : 내 뒤에 패킷이 더 있는지 표시
  • Offset : 이전 조각보다 데이터 크기만큼 떨어져 있음 ( 3280을 8로 나눠서 쓴 값 ) 
  • Fragment4  : 마지막 패킷이므로 MF0, Data는 남은 Bytes( 2140Bytes )가 됨
  • 조각화 된 패킷들은 각각 IP 프로토콜이 Encapsulation되어 있는 상태 ( 페이로드는 Data )
  • 쪼개진 데이터들의 ID값같으므로, 받는 쪽에서 flagOffeset을 이용해 데이터를 재조립함 

 


다음 강의를 정리한 내용입니다.

https://www.youtube.com/watch?v=_AONcID7Sc8&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=14&ab_channel=%EB%94%B0%EB%9D%BC%ED%95%98%EB%A9%B4%EC%84%9C%EB%B0%B0%EC%9A%B0%EB%8A%94IT

'Computer Science > 네트워크' 카테고리의 다른 글

UDP 프로토콜  (0) 2023.11.09
4계층 ( Transport Layer )  (0) 2023.11.09
라우팅 테이블  (1) 2023.10.28
먼 컴퓨터와 통신하는 방법 : IPv4 & ICMP ( 3 Layer )  (3) 2023.10.28
ARP 프로토콜  (1) 2023.10.26

+ Recent posts