데이터 통신과 네트워크 - Transport Layer2

강준호·2021년 11월 11일
0

TCP 특징

full duplex data

  • 같은 커넥션 내에서 왔다갔다 패킷 가능
  • TCP 최대 사이즈는 MSS

connection-oriented

  • 커넥션을 맺기 위한 작업이 필요(핸드쉐이킹)

flow controlled

  • 센더가 리시버 버퍼 상황보고 결정

point-to-point

  • 하나의 센더와 리시버가 있는걸 지향

reliable, in-order byte stream

  • 순서 정의, reliable 한 프로토콜

pipelined

  • 효율성 향상을 위해 여러개씩 보내는 파이프라인 디자인

작동방식

  • 클라이언트에서 소켓 만듬 ->세그먼트 보냄->서버 세그먼트가 해당 소켓 받음->데이터 처리
  • TCP는 센더의 ip주소,포트넘버,des ip주소, des 포트 넘버로 구별.
  • 모든 커넥션들이 유일한 식별자를 부여할 수 있음.-> 하나의 소켓으로 커넥션 여러개 관리 가능.

TCP 세그먼트 구조

  • 소스 포트, des 포트, seq num, ack num, 리시브 윈도우 등

seq num, ACK

  • cumulative ack 시스템 사용

TCP round trip, timeout

  • TCP 타임아웃은 RTT(패킷 하나 보내고 ack 받는 시간)보다는 길어야
  • 타임 아웃 시간을 정하는 방법으로는 추정 RTT + 4*DevRTT(safety 마진) 를 곱하는 방식이 있다.

TCP reliable 데이터 전송 비결

  • 파이프 라인 세그먼트
  • 누적 ack
  • 타이머 세팅
  • 중복 ack 처리

TCP fast retransmit

  • cumulative ack 방식 사용
  • 문제가 발생한 놈만 다시 보내줌
  • 중복 ack 3개 나오면 다시 보내줌 -> 타임아웃 시간안에 다시 보내줘서 바로 만회가능

TCP flow control

  • 받는 리시버 생각해서 보내주기
  • 리시버는 (TCP 패킷 헤더에 있는) 빈공간이 얼마나 남았는지 리시브 윈도우 밸류를 알려줌

3way handshake

  • tcp 커넥션 전에 악수 함 하고 시작

client

  • SYN = 1, seq= client 랜덤 값
  • 다시 보낼때 SYN=0, seq = 클라이언트+1, ack= 서버+1

server

  • SYN = 1, seq = sever 랜덤 값, ack= 클라이언트 seq+1

커넥션으로 인한 해킹

Syn Flood Attack

  • 좀비 Botnet으로 특정 서버 접속함 -> 커넥션 맺어달라고 계속 요청 -> 서버는 이것도 모르고 syn ack 좋다고 보냄 -> 헥헥 거리다가 서버 리소스 가득참 -> 진짜 필요한 사람은 요청 못받음ㅜ

0개의 댓글