연결지향형 TCP 프로토콜

이정훈·2023년 1월 30일
0

네트워크

목록 보기
10/15

TCP 프로토콜

TCP가 하는 일

  • 안전한 연결을 지향하는 TCP 프로토콜

TCP 프로토콜의 구조

  • 출발지 포트
  • 목적지 포트
  • Seq번호 : TCP 패킷의 순서 번호
  • Ack번호 : Seq 번호에 대한 응답번호
  • 오프셋 : 헤더의 길이, IP 헤더의 길이와 성격이 비슷, 최대 15, Offset * 4 = 실제 헤더의 크기
  • Reserved : 예약된 필드로써 사용하지 않는 곳
  • TCP Flags : 현재 패킷의 종류를 표시
  • URG : 긴급 bit, 우선순위가 높은 데이터를 포함한 패킷
  • ACK : 승인 bit, 승인의 뜻을 포함한 패킷
  • PSH : 밀어넣기 bit, TCP Buffer가 일정한 크기만큼 쌓여야 패킷을 추가 전송하는데 이를 생략하고 계속 데이터를 전송하게 함
  • RST : 초기화 bit, 데이터를 주고받는 거에 문제가 발생했으니 서로의 연결을 초기화하겠다는 패킷
  • SYN : 동기화 bit, Seq 번호를 동기화하고 연결 수립을 요청한다는 패킷
  • FIN : 종료 bit, 서버와 클라이언트가 연결을 종료하겠다는 패킷
  • 체크썸: 헤더의 오류를 확인하기 위한 값
  • Urgent Pointer: 어디가 긴급 데이터인지를 가리키는 곳

TCP플래그

TCP 플래그의 종류

  • Acknowledgment : 대답
  • Syn : 요청

TCP를 이용한 통신과정

  • 플래그들을 가지고 어떻게 통신하는 지?

연결 수립 과정

  • 연결을 먼저 수립을 시킨다
  • 그 후 데이터를 주고 받는다
  • 갔다 왔다 갔다 3번 한다
  • 이 과정을 거처야 송수신을 한다

3Way Hand Shake

  • syn : 너랑 연결해도 돼?
  • syn+ack : 응 해도 되 근데 나도 해도 돼?
  • ack : 응 너도 해
  • 시퀀스 번호는 임의로 지정해준다

데이터 송수신 과정

  • 그 다음 클라이언트가 서버에 새로운 것을 요구해서 결과물을 볼 수 있다.
    (ex. 우리 이제 서로 신뢰해 나 이제 이 자료 보여줘!)
  • syn 할때 3way handshake 할때 시퀀스 번호 그대로 사용하는데 새로운 데이터를 요구할때는 데이터 크기만큼 증가시켜 보내게 된다(ex 101 에서 201)

실습

가상PC2에 가상PC1이 접속할수 있게 만들기(wireshartk로 상태확인하기)

  • 가상 pc2(서버)에 쉐어프로그램 설치
    • 서버는 꺼지면 안된다! 서버가 지속 시간에 따라 등급을 정하기도 한다.
  • 가상 pc1(클라이언트)에서 쉐어프로그램 접속
  • 맨 위가 3way 방식으로 처음에 주고 받으며 서로를 신뢰 할지 말지 정하는 것

TCP 상태전이도

TCP 연결 상태의 변화

  • 점선은 서버의 상태변화
    • 항상 켜진 상태로 유지
  • 실선은 클라이언트의 상태변화
  • 점선과 실선이 주고 주고받으며 서로 estalshed 상태가 되어야 한다.

3Way Hand Shake과 함께 보기

  • netstat -ano 사용하여 확인
  • 서버 리스닝 클라이언트 싱크센드
  • 서버 싱크 리시브드 싱크 액트 보내고

  • 서로 연결 된 상태 (서로의 화면에 establshed)
profile
싱숭생숭늉

0개의 댓글