SlideShare una empresa de Scribd logo
1 de 23
Descargar para leer sin conexión
TCP, 믿을 수 있나요!?
NHN NEXT
박용민
[2015.04.27]
TCP?
 전송 제어 프로토콜(Transmission Control Protocol, TCP)은 인터넷 프로토콜 스위트(IP)의
핵심 프로토콜 중 하나로, IP와 함께 TCP/IP라는 명칭으로도 널리 불린다.
 TCP는 근거리 통신망이나 인트라넷, 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간에
일련의 옥텟을 안정적으로, 순서대로, 에러없이 교환할 수 있게 한다.
 TCP는 전송 계층에 위치한다.
 네트워크의 정보 전달을 통제하는 프로토콜이자 인터넷을 이루는 핵심 프로토콜의
하나로서 국제 인터넷 표준화 기구(IETF)의 RFC 793에 기술되어 있다.
http://goo.gl/qk9Izg
Socket 라이브러리 리졸버
네트워크 애플리케이션
(웹 브라우저, 메일러, 웹 서버, 메일 서버 등)
IP
(패킷 운반, 경로 결정) ARP
프로토콜 스택
TCP
(커넥션 사용)
UDP
(커넥션 사용하지 않음)
ICMP
LAN 드라이버 (LAN 어댑터 제어)
LAN 어댑터
애플리케이션
OS
소프트웨어
드라이버
하드웨어
* TCP : Transmission Control Protocol
* UDP : User Datagram Protocol
* IP : Internet Protocol
* ICMP : Internet Control Message Protocol
* ARP : Address Resolution Protocol
TCP/IP는 계층구조!
위의 계층이 아래 계층에
작업을 의뢰하도록 되어 있다.
서버에 접속?
서버클라이언트
1. 소켓을 만든다.
2. 브라우저는 URL을 바탕으로 서버의 IP주소 조사
3. 포트번호는 80번 사용 ( web 기준 )
4. 클라이언트의 IP주소나 포트 번호를 서버측에 알림
1. 소켓은 이미 만들어져 있다.
2. 클라이언트의 요청을 기다린다.
3. 클라이언트 요청이 들어오면
소켓을 연결하여 데이터를 주고 받는다.
(a) 데이터를 저장한 패킷
..…
데이터
조각
TCP의
제어정보
이더넷이나
IP의 제어 정보
애플리케이션의 데이터
패킷 진행 방향
패킷 전체
애플리케이션의 데이터를 송・수신할 경우의 패킷 모습
(b) 제어 정보만 있는 패킷
제어 동작이나 연결 끊기 동작 등 애플리케이션의 데이터가
없는 경우에는 제어 정보만 주고받는데, 이때의 패킷 모습
TCP의
제어정보
이더넷이나
IP의 제어 정보
패킷 진행 방향
데이터를
송・수신 한다!
• 데이터를 송신하는 방법은 다양하다.
ex) 한꺼번에 전부 전송, 1바이트씩 전송, 1행씩 전송 등.
• 작은 패킷을 자주 보낼 경우, 네트워크 이용 효율이 저하된다.
→ 어느 정도 저장한 후 송・수신 동작을 수행.
프리앰블(preamble) /
스타트 프레임 딜리미터
버퍼 진행 방향
이부분의
최대 길이가 MSS
* MTU(Maximum Transmission Unit)
- 패킷 한 개로 운반할 수 있는 디지털 데이터의 최대 길이, 이더넷에서는 보통 1,500바이트
* MSS(Maximum Segment Size)
- 헤더를 제외하고 한 개의 패킷으로 운반할 수 있는 TCP의 데이터의 최대 길이
FCS데이터TCP 헤더IP 헤더MAC 헤더
이부분의 최대 길이가 MTU
(이더넷에서는 1,500바이트)
데이터를 송・수신 한다!
• 애플리케이션에서 받은 데이터가 MSS를 초과하거나
MSS에 가까운 길이에 이르기까지 데이터를 저장한 후 송신 동작을 수행.
➥ 패킷이 잘게 나누어질 걱정을 할 필요가 없다.
• MSS에 가깝게 데이터를 저장하면 시간이 걸려 송신 동작이 지연.
➥ 일정 시간 이상 경과하면 패킷을 송신한다. (프로토콜 스택의 내부 타이머에 의한 동작)
 이에 대해 TCP/IP 프로토콜 사양에는 절충에 관한 규정은 없다 ! (개발자 마음대로^^)
데이터를
보내고 싶어요!
HTML 헤더 메시지 본문
애플리케이션의 데이터
조각2TCP
조각2TCPIPMAC
조각1TCP
조각1TCPIPMAC
TCP가 조각으로 분할하여 헤더 부가
IP 헤더 부가
…..
…..
패킷 진행 방향
MSS의 크기 MTU의 크기
* MSS : Maximum Segment Size
* MTU : Maximum Transmission Unit
 클 때는 나누는게 최고!
ACK라는 것이 있지요!
 ACK는 송신측에 대하여 수신측에서 긍정 응답으로 보내지는 전송 제어용 캐릭터
 ACK 번호를 사용하여 패킷이 도착했는지 확인한다.
→ 송신한 패킷이 제대로 도착하지 않았으면 재송신을 요구해요.
[acknowledge]
시퀀스 번호 : 1, 크기 : 1,460바이트
ACK 번호 : 1,461
시퀀스 번호 : 1,461, 크기 : 1,460바이트
ACK 번호 : 2,921
시퀀스 번호 : 2,921, 크기 : 1,460바이트
ACK 번호 : 4,381
송신측 수신측
데
이
터
분
할
이 값을 시퀀스
번호로 설정
맨 앞부터 세어
1번째 바이트
맨 앞부터 세어
1,461번째 바이트
맨 앞부터 세어
2,921번째 바이트
애플리케이션
데이터
데
이
터
조
립
이 값에 1을 더한 값을
ACK 번호로 설정
1,460번째 바이트
까지 수신 완료
2,920번째 바이트
까지 수신 완료
4,380번째 바이트
까지 수신 완료
수신 확인 응답
실제로 시퀀스 번호는 난수를 바탕으로
산출한 초기값으로 시작한다. (악성 공격 예방)
그런데, 왜!!
클라이언트에서 서버로만
데이터를 보내나요?
 데이터의 흐름을 하나만 고려했기 때문!
TCP의 데이터 송・수신 동작은 양방향이므로, 여기에 대응해야 한다.
서버 클라이언트
클라이언트측의 시퀀스 번호 초기값
서버측의 시퀀스 번호 초기값
클라이언트측 시퀀스 번호
서버측의 ACK 번호
서버측의 시퀀스 번호
클라이언트측의 ACK 번호
…..…..
서버에서 클라이언트에게
보내는 데이터
클라이언트에서 서버에
보내는 데이터
클라이언트에서 서버에
도착한 데이터
서버에서 클라이언트에
도착한 데이터
…..
…..
…..
…..
서버 클라이언트
시퀀스 번호 + 데이터
ACK 번호
시퀀스 번호 + 데이터
ACK 번호
......
송・수신 동작
시퀀스 번호 초기값
ACK 번호 접속 동작
ACK 번호
시퀀스 번호 초기값
: 클라이언트에서 서버에
보내는 데이터에 관한 것
: 서버에서 클라이언트에
보내는 데이터에 관한 것
ACK번호의 대기시간?
대기 시간은 너무 짧지도, 길지도 않은 적절한(?) 값이어야 한다.
 TCP는 대기 시간을 동적으로 변경.
 ACK 번호가 돌아오는 시간을 기준으로 대기시간을 판단한다.
ACK번호가 늦게 오면
마냥 기다려야 돼요??
 윈도우 제어 방식에 따라 효율적으로 ACK 번호를 관리한다.
➥ 한 개의 패킷을 보낸 후 ACK 번호를 기다리지 않고 차례대로
연속해서 복수의 패킷을 보내는 방법
(a) 핑퐁 방식 (b) 윈도우 제어 방식
서버
클라이언트
ACK 번호를
기다리는
시간이 낭비됨
서버
클라이언트
ACK 번호를
기다리는 사이
다음 송신을 하므로
낭비가 없음
시간의
경과
시간의
경과
능력의 한계;;를 느낄 때!
1. 수신측 TCP는 패킷을 수신하면 수신용 버퍼 메모리에 일시 보관.
2. 수신측에서 ACK 번호를 계산하여 조각 데이터를 복원후 애플리케이션에 전달.
3. 처리가 끝나지 않았을 때 도착한 데이터는 버퍼에 일시 보관.
if (애플리케이션에 건네주는 속도 < 데이터 도착 속도) {
응 ??
}
수신측
송신측
4380 2920 1460 0 1460 02920
빈 영역이 0이 되면
송신 중지
보낸 데이터만큼
빈 영역에서 뺌
수신용 메모리의
빈 영역
데이터를 2,920
바이트만큼 추출 수신측
프로그램
수신용 메모리 영역
(4,380바이트)
알려줌 다시
알려줌
TCP vs UDP
이후의 소켓 말소, IP와 이더넷의 패킷 송・수신에 대한 설명은 생략~ ^^
に
UDP
TCP
중개 외엔 아무것도 안해
아직 도착 안했어
다시 한번 보내줘
데이터를 확실히 송・수신
송・수신 속도를 조절
Fig1. http://goo.gl/9Eeid0
UDP : User Diagram Protocol
DNS 서버에 대한 조회 등에서 짧은 제어용 데이터를 송・수신할 경우
음성이나 동영상 데이터를 수신할 경우
TCP : Transmission Control Protocol
브라우저나 메일 등의 일반적인
애플리케이션이 데이터를 송・수신할 경우
이제 TCP, 믿을 수 있겠죠?
[Reference]
[1] “성공과 실패를 결정하는 1%의 네트워크 원리”, Tsutomu Tone, 성안당.
[2] “윤성우의 열혈 TCP/IP 소켓 프로그래밍”, 윤성우, 오렌지미디어.
[3] “뇌를 자극하는 TCP/IP 소켓 프로그래밍”, 윤상배, 한빛미디어.
[4] http://itpro.nikkeibp.co.jp/article/lecture/20070305/263897/

Más contenido relacionado

La actualidad más candente

802.1x authentication
802.1x authentication802.1x authentication
802.1x authenticationXiaoqi Zhao
 
Process Scheduler and Balancer in Linux Kernel
Process Scheduler and Balancer in Linux KernelProcess Scheduler and Balancer in Linux Kernel
Process Scheduler and Balancer in Linux KernelHaifeng Li
 
Netmanias L2,L3 Training (5) L3 SW Architecture
Netmanias L2,L3 Training (5) L3 SW ArchitectureNetmanias L2,L3 Training (5) L3 SW Architecture
Netmanias L2,L3 Training (5) L3 SW ArchitectureChris Changmo Yoo
 
Mail server on cisco packet tracer
Mail server on cisco packet tracerMail server on cisco packet tracer
Mail server on cisco packet tracerJalalMiah5
 
Web Server, DNS Server, dan FTP Server
Web Server, DNS Server, dan FTP ServerWeb Server, DNS Server, dan FTP Server
Web Server, DNS Server, dan FTP ServerIsna Dwi Setianingsih
 
FD.IO Vector Packet Processing
FD.IO Vector Packet ProcessingFD.IO Vector Packet Processing
FD.IO Vector Packet ProcessingKernel TLV
 
introduction to linux kernel tcp/ip ptocotol stack
introduction to linux kernel tcp/ip ptocotol stack introduction to linux kernel tcp/ip ptocotol stack
introduction to linux kernel tcp/ip ptocotol stack monad bobo
 
Routing Information Protocol (RIP)
Routing Information Protocol(RIP)Routing Information Protocol(RIP)
Routing Information Protocol (RIP)waqasahmad1995
 
An overview of TCP (Transmission Control Protocol)
An overview of TCP (Transmission Control Protocol)An overview of TCP (Transmission Control Protocol)
An overview of TCP (Transmission Control Protocol)Ammad Marwat
 
Tcp Udp Icmp And The Transport Layer
Tcp Udp Icmp And The Transport LayerTcp Udp Icmp And The Transport Layer
Tcp Udp Icmp And The Transport Layertmavroidis
 
computer Netwoks - network layer
computer Netwoks - network layercomputer Netwoks - network layer
computer Netwoks - network layerSendhil Kumar
 
Receive side scaling (RSS) with eBPF in QEMU and virtio-net
Receive side scaling (RSS) with eBPF in QEMU and virtio-netReceive side scaling (RSS) with eBPF in QEMU and virtio-net
Receive side scaling (RSS) with eBPF in QEMU and virtio-netYan Vugenfirer
 
Tutorial WiFi driver code - Opening Nuts and Bolts of Linux WiFi Subsystem
Tutorial WiFi driver code - Opening Nuts and Bolts of Linux WiFi SubsystemTutorial WiFi driver code - Opening Nuts and Bolts of Linux WiFi Subsystem
Tutorial WiFi driver code - Opening Nuts and Bolts of Linux WiFi SubsystemDheryta Jaisinghani
 

La actualidad más candente (20)

Linux Network Stack
Linux Network StackLinux Network Stack
Linux Network Stack
 
Understanding DPDK
Understanding DPDKUnderstanding DPDK
Understanding DPDK
 
802.1x authentication
802.1x authentication802.1x authentication
802.1x authentication
 
Process Scheduler and Balancer in Linux Kernel
Process Scheduler and Balancer in Linux KernelProcess Scheduler and Balancer in Linux Kernel
Process Scheduler and Balancer in Linux Kernel
 
Netmanias L2,L3 Training (5) L3 SW Architecture
Netmanias L2,L3 Training (5) L3 SW ArchitectureNetmanias L2,L3 Training (5) L3 SW Architecture
Netmanias L2,L3 Training (5) L3 SW Architecture
 
Mail server on cisco packet tracer
Mail server on cisco packet tracerMail server on cisco packet tracer
Mail server on cisco packet tracer
 
Web Server, DNS Server, dan FTP Server
Web Server, DNS Server, dan FTP ServerWeb Server, DNS Server, dan FTP Server
Web Server, DNS Server, dan FTP Server
 
IPv6
IPv6IPv6
IPv6
 
FD.IO Vector Packet Processing
FD.IO Vector Packet ProcessingFD.IO Vector Packet Processing
FD.IO Vector Packet Processing
 
introduction to linux kernel tcp/ip ptocotol stack
introduction to linux kernel tcp/ip ptocotol stack introduction to linux kernel tcp/ip ptocotol stack
introduction to linux kernel tcp/ip ptocotol stack
 
Routing Information Protocol (RIP)
Routing Information Protocol(RIP)Routing Information Protocol(RIP)
Routing Information Protocol (RIP)
 
An overview of TCP (Transmission Control Protocol)
An overview of TCP (Transmission Control Protocol)An overview of TCP (Transmission Control Protocol)
An overview of TCP (Transmission Control Protocol)
 
Ixgbe internals
Ixgbe internalsIxgbe internals
Ixgbe internals
 
Tcp Udp Icmp And The Transport Layer
Tcp Udp Icmp And The Transport LayerTcp Udp Icmp And The Transport Layer
Tcp Udp Icmp And The Transport Layer
 
computer Netwoks - network layer
computer Netwoks - network layercomputer Netwoks - network layer
computer Netwoks - network layer
 
Receive side scaling (RSS) with eBPF in QEMU and virtio-net
Receive side scaling (RSS) with eBPF in QEMU and virtio-netReceive side scaling (RSS) with eBPF in QEMU and virtio-net
Receive side scaling (RSS) with eBPF in QEMU and virtio-net
 
Tutorial WiFi driver code - Opening Nuts and Bolts of Linux WiFi Subsystem
Tutorial WiFi driver code - Opening Nuts and Bolts of Linux WiFi SubsystemTutorial WiFi driver code - Opening Nuts and Bolts of Linux WiFi Subsystem
Tutorial WiFi driver code - Opening Nuts and Bolts of Linux WiFi Subsystem
 
Jncia junos
Jncia junosJncia junos
Jncia junos
 
Access Point
Access PointAccess Point
Access Point
 
Interrupts on xv6
Interrupts on xv6Interrupts on xv6
Interrupts on xv6
 

Destacado

SDEC2011 Implementing me2day friend suggestion
SDEC2011 Implementing me2day friend suggestionSDEC2011 Implementing me2day friend suggestion
SDEC2011 Implementing me2day friend suggestionKorea Sdec
 
포인터의기초 (2) - 포인터 사용하기1
포인터의기초 (2) - 포인터 사용하기1포인터의기초 (2) - 포인터 사용하기1
포인터의기초 (2) - 포인터 사용하기1Hoyoung Jung
 
포인터의 공식
포인터의 공식포인터의 공식
포인터의 공식Hoyoung Jung
 
4. 함수포인터
4. 함수포인터4. 함수포인터
4. 함수포인터Hoyoung Jung
 
Memory & object pooling
Memory & object poolingMemory & object pooling
Memory & object poolingNam Hyeonuk
 
소셜웹트렌드연구회 이강석 소개 포트폴리오
소셜웹트렌드연구회 이강석 소개 포트폴리오소셜웹트렌드연구회 이강석 소개 포트폴리오
소셜웹트렌드연구회 이강석 소개 포트폴리오강석 이
 
TCP/IP Protocol - JAVA
TCP/IP Protocol - JAVATCP/IP Protocol - JAVA
TCP/IP Protocol - JAVAcooddy
 
네트워크 스터디(Tcp 소켓 프로그래밍)
네트워크 스터디(Tcp 소켓 프로그래밍)네트워크 스터디(Tcp 소켓 프로그래밍)
네트워크 스터디(Tcp 소켓 프로그래밍)MoonLightMS
 
뇌자T 1.네트워크와 tcpip
뇌자T   1.네트워크와 tcpip뇌자T   1.네트워크와 tcpip
뇌자T 1.네트워크와 tcpipsj k
 
포인터의 기초(1)
포인터의 기초(1)포인터의 기초(1)
포인터의 기초(1)Hoyoung Jung
 
Haskell study 15
Haskell study 15Haskell study 15
Haskell study 15Nam Hyeonuk
 
[14.10.20] 아! 그거...모르겠습니다 - TLS(devrookie)
[14.10.20] 아! 그거...모르겠습니다 - TLS(devrookie)[14.10.20] 아! 그거...모르겠습니다 - TLS(devrookie)
[14.10.20] 아! 그거...모르겠습니다 - TLS(devrookie)해강
 
Tcp ip & io model
Tcp ip & io modelTcp ip & io model
Tcp ip & io modelNam Hyeonuk
 
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST_NHNent
 
McDonald's Marketing Strategy suggestion
McDonald's Marketing Strategy suggestionMcDonald's Marketing Strategy suggestion
McDonald's Marketing Strategy suggestionJuhyun Eom
 
파이썬 데이터 검색
파이썬 데이터 검색파이썬 데이터 검색
파이썬 데이터 검색Yong Joon Moon
 
내 질문에는 왜 답변이 달리지 않을까
내 질문에는 왜 답변이 달리지 않을까내 질문에는 왜 답변이 달리지 않을까
내 질문에는 왜 답변이 달리지 않을까Hoyoung Jung
 

Destacado (20)

SDEC2011 Implementing me2day friend suggestion
SDEC2011 Implementing me2day friend suggestionSDEC2011 Implementing me2day friend suggestion
SDEC2011 Implementing me2day friend suggestion
 
포인터의기초 (2) - 포인터 사용하기1
포인터의기초 (2) - 포인터 사용하기1포인터의기초 (2) - 포인터 사용하기1
포인터의기초 (2) - 포인터 사용하기1
 
포인터의 공식
포인터의 공식포인터의 공식
포인터의 공식
 
4. 함수포인터
4. 함수포인터4. 함수포인터
4. 함수포인터
 
3.포인터
3.포인터3.포인터
3.포인터
 
Memory & object pooling
Memory & object poolingMemory & object pooling
Memory & object pooling
 
소셜웹트렌드연구회 이강석 소개 포트폴리오
소셜웹트렌드연구회 이강석 소개 포트폴리오소셜웹트렌드연구회 이강석 소개 포트폴리오
소셜웹트렌드연구회 이강석 소개 포트폴리오
 
TCP/IP Protocol - JAVA
TCP/IP Protocol - JAVATCP/IP Protocol - JAVA
TCP/IP Protocol - JAVA
 
Database
DatabaseDatabase
Database
 
네트워크 스터디(Tcp 소켓 프로그래밍)
네트워크 스터디(Tcp 소켓 프로그래밍)네트워크 스터디(Tcp 소켓 프로그래밍)
네트워크 스터디(Tcp 소켓 프로그래밍)
 
뇌자T 1.네트워크와 tcpip
뇌자T   1.네트워크와 tcpip뇌자T   1.네트워크와 tcpip
뇌자T 1.네트워크와 tcpip
 
포인터의 기초(1)
포인터의 기초(1)포인터의 기초(1)
포인터의 기초(1)
 
Haskell study 15
Haskell study 15Haskell study 15
Haskell study 15
 
Multi thread
Multi threadMulti thread
Multi thread
 
[14.10.20] 아! 그거...모르겠습니다 - TLS(devrookie)
[14.10.20] 아! 그거...모르겠습니다 - TLS(devrookie)[14.10.20] 아! 그거...모르겠습니다 - TLS(devrookie)
[14.10.20] 아! 그거...모르겠습니다 - TLS(devrookie)
 
Tcp ip & io model
Tcp ip & io modelTcp ip & io model
Tcp ip & io model
 
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
 
McDonald's Marketing Strategy suggestion
McDonald's Marketing Strategy suggestionMcDonald's Marketing Strategy suggestion
McDonald's Marketing Strategy suggestion
 
파이썬 데이터 검색
파이썬 데이터 검색파이썬 데이터 검색
파이썬 데이터 검색
 
내 질문에는 왜 답변이 달리지 않을까
내 질문에는 왜 답변이 달리지 않을까내 질문에는 왜 답변이 달리지 않을까
내 질문에는 왜 답변이 달리지 않을까
 

Similar a [네트워크] TCP, 믿을 수 있나요!?

소켓프로그래밍 기초요약
소켓프로그래밍 기초요약소켓프로그래밍 기초요약
소켓프로그래밍 기초요약세빈 정
 
실무로 배우는 시스템 성능 최적화 10부. 네트워크 모니터링
실무로 배우는 시스템 성능 최적화   10부. 네트워크 모니터링실무로 배우는 시스템 성능 최적화   10부. 네트워크 모니터링
실무로 배우는 시스템 성능 최적화 10부. 네트워크 모니터링Hyunsoo Jung
 
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직Hyunjik Bae
 
TCP/IP 발표자료 - 김연수
TCP/IP 발표자료 - 김연수TCP/IP 발표자료 - 김연수
TCP/IP 발표자료 - 김연수Yeon Soo Kim
 
스트리밍 프로토콜
스트리밍 프로토콜스트리밍 프로토콜
스트리밍 프로토콜greenday96
 
TCP 연결 과정_Wh apm
TCP 연결 과정_Wh apmTCP 연결 과정_Wh apm
TCP 연결 과정_Wh apm엑셈
 
Ch01 네트워크와+소켓+프로그래밍+[호환+모드]
Ch01 네트워크와+소켓+프로그래밍+[호환+모드]Ch01 네트워크와+소켓+프로그래밍+[호환+모드]
Ch01 네트워크와+소켓+프로그래밍+[호환+모드]지환 김
 
Icmp Attak Against Tcp
Icmp Attak Against TcpIcmp Attak Against Tcp
Icmp Attak Against Tcpxyzlee
 
Interface and Protocol
Interface and ProtocolInterface and Protocol
Interface and ProtocolWonjun Hwang
 
Implementing remote procedure calls rev2
Implementing remote procedure calls rev2Implementing remote procedure calls rev2
Implementing remote procedure calls rev2Sung-jae Park
 
웹기반원격감시제어 2010 CPD
웹기반원격감시제어 2010 CPD웹기반원격감시제어 2010 CPD
웹기반원격감시제어 2010 CPD활 김
 
Cse342 chapter 04
Cse342 chapter 04Cse342 chapter 04
Cse342 chapter 04Jinil Nam
 
SDEC2011 Rapidant
SDEC2011 RapidantSDEC2011 Rapidant
SDEC2011 RapidantKorea Sdec
 
ACL - cisco 2811 router
ACL - cisco 2811 router ACL - cisco 2811 router
ACL - cisco 2811 router 준기 홍
 
글로벌 모바일 네트워크 환경 이해 Understanding global mobile network situation
글로벌 모바일 네트워크 환경 이해 Understanding global mobile network situation글로벌 모바일 네트워크 환경 이해 Understanding global mobile network situation
글로벌 모바일 네트워크 환경 이해 Understanding global mobile network situationJonghyon Sohn
 
서버성능개선 류우림
서버성능개선 류우림서버성능개선 류우림
서버성능개선 류우림우림 류
 
중급 소켓프로그래밍
중급 소켓프로그래밍중급 소켓프로그래밍
중급 소켓프로그래밍quxn6
 
[컴퓨터보안] TLS와 HTTPS
[컴퓨터보안] TLS와 HTTPS[컴퓨터보안] TLS와 HTTPS
[컴퓨터보안] TLS와 HTTPSDonghyeongKang1
 

Similar a [네트워크] TCP, 믿을 수 있나요!? (20)

소켓프로그래밍 기초요약
소켓프로그래밍 기초요약소켓프로그래밍 기초요약
소켓프로그래밍 기초요약
 
실무로 배우는 시스템 성능 최적화 10부. 네트워크 모니터링
실무로 배우는 시스템 성능 최적화   10부. 네트워크 모니터링실무로 배우는 시스템 성능 최적화   10부. 네트워크 모니터링
실무로 배우는 시스템 성능 최적화 10부. 네트워크 모니터링
 
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
 
TCP/IP 발표자료 - 김연수
TCP/IP 발표자료 - 김연수TCP/IP 발표자료 - 김연수
TCP/IP 발표자료 - 김연수
 
스트리밍 프로토콜
스트리밍 프로토콜스트리밍 프로토콜
스트리밍 프로토콜
 
TCP 연결 과정_Wh apm
TCP 연결 과정_Wh apmTCP 연결 과정_Wh apm
TCP 연결 과정_Wh apm
 
Ch01 네트워크와+소켓+프로그래밍+[호환+모드]
Ch01 네트워크와+소켓+프로그래밍+[호환+모드]Ch01 네트워크와+소켓+프로그래밍+[호환+모드]
Ch01 네트워크와+소켓+프로그래밍+[호환+모드]
 
Icmp Attak Against Tcp
Icmp Attak Against TcpIcmp Attak Against Tcp
Icmp Attak Against Tcp
 
Interface and Protocol
Interface and ProtocolInterface and Protocol
Interface and Protocol
 
Implementing remote procedure calls rev2
Implementing remote procedure calls rev2Implementing remote procedure calls rev2
Implementing remote procedure calls rev2
 
퀴즈요약
퀴즈요약퀴즈요약
퀴즈요약
 
네트워크 기본
네트워크 기본네트워크 기본
네트워크 기본
 
웹기반원격감시제어 2010 CPD
웹기반원격감시제어 2010 CPD웹기반원격감시제어 2010 CPD
웹기반원격감시제어 2010 CPD
 
Cse342 chapter 04
Cse342 chapter 04Cse342 chapter 04
Cse342 chapter 04
 
SDEC2011 Rapidant
SDEC2011 RapidantSDEC2011 Rapidant
SDEC2011 Rapidant
 
ACL - cisco 2811 router
ACL - cisco 2811 router ACL - cisco 2811 router
ACL - cisco 2811 router
 
글로벌 모바일 네트워크 환경 이해 Understanding global mobile network situation
글로벌 모바일 네트워크 환경 이해 Understanding global mobile network situation글로벌 모바일 네트워크 환경 이해 Understanding global mobile network situation
글로벌 모바일 네트워크 환경 이해 Understanding global mobile network situation
 
서버성능개선 류우림
서버성능개선 류우림서버성능개선 류우림
서버성능개선 류우림
 
중급 소켓프로그래밍
중급 소켓프로그래밍중급 소켓프로그래밍
중급 소켓프로그래밍
 
[컴퓨터보안] TLS와 HTTPS
[컴퓨터보안] TLS와 HTTPS[컴퓨터보안] TLS와 HTTPS
[컴퓨터보안] TLS와 HTTPS
 

Último

공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화JMP Korea
 
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement MethodologyJMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement MethodologyJMP Korea
 
JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP Korea
 
데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법JMP Korea
 
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?Jay Park
 
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석JMP Korea
 
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개JMP Korea
 
JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP Korea
 

Último (8)

공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화
 
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement MethodologyJMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
 
JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!
 
데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법
 
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
 
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
 
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
 
JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례
 

[네트워크] TCP, 믿을 수 있나요!?

  • 1. TCP, 믿을 수 있나요!? NHN NEXT 박용민 [2015.04.27]
  • 2. TCP?  전송 제어 프로토콜(Transmission Control Protocol, TCP)은 인터넷 프로토콜 스위트(IP)의 핵심 프로토콜 중 하나로, IP와 함께 TCP/IP라는 명칭으로도 널리 불린다.  TCP는 근거리 통신망이나 인트라넷, 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 옥텟을 안정적으로, 순서대로, 에러없이 교환할 수 있게 한다.  TCP는 전송 계층에 위치한다.  네트워크의 정보 전달을 통제하는 프로토콜이자 인터넷을 이루는 핵심 프로토콜의 하나로서 국제 인터넷 표준화 기구(IETF)의 RFC 793에 기술되어 있다. http://goo.gl/qk9Izg
  • 3. Socket 라이브러리 리졸버 네트워크 애플리케이션 (웹 브라우저, 메일러, 웹 서버, 메일 서버 등) IP (패킷 운반, 경로 결정) ARP 프로토콜 스택 TCP (커넥션 사용) UDP (커넥션 사용하지 않음) ICMP LAN 드라이버 (LAN 어댑터 제어) LAN 어댑터 애플리케이션 OS 소프트웨어 드라이버 하드웨어 * TCP : Transmission Control Protocol * UDP : User Datagram Protocol * IP : Internet Protocol * ICMP : Internet Control Message Protocol * ARP : Address Resolution Protocol TCP/IP는 계층구조! 위의 계층이 아래 계층에 작업을 의뢰하도록 되어 있다.
  • 4. 서버에 접속? 서버클라이언트 1. 소켓을 만든다. 2. 브라우저는 URL을 바탕으로 서버의 IP주소 조사 3. 포트번호는 80번 사용 ( web 기준 ) 4. 클라이언트의 IP주소나 포트 번호를 서버측에 알림 1. 소켓은 이미 만들어져 있다. 2. 클라이언트의 요청을 기다린다. 3. 클라이언트 요청이 들어오면 소켓을 연결하여 데이터를 주고 받는다.
  • 5. (a) 데이터를 저장한 패킷 ..… 데이터 조각 TCP의 제어정보 이더넷이나 IP의 제어 정보 애플리케이션의 데이터 패킷 진행 방향 패킷 전체 애플리케이션의 데이터를 송・수신할 경우의 패킷 모습 (b) 제어 정보만 있는 패킷 제어 동작이나 연결 끊기 동작 등 애플리케이션의 데이터가 없는 경우에는 제어 정보만 주고받는데, 이때의 패킷 모습 TCP의 제어정보 이더넷이나 IP의 제어 정보 패킷 진행 방향
  • 6. 데이터를 송・수신 한다! • 데이터를 송신하는 방법은 다양하다. ex) 한꺼번에 전부 전송, 1바이트씩 전송, 1행씩 전송 등. • 작은 패킷을 자주 보낼 경우, 네트워크 이용 효율이 저하된다. → 어느 정도 저장한 후 송・수신 동작을 수행.
  • 7. 프리앰블(preamble) / 스타트 프레임 딜리미터 버퍼 진행 방향 이부분의 최대 길이가 MSS * MTU(Maximum Transmission Unit) - 패킷 한 개로 운반할 수 있는 디지털 데이터의 최대 길이, 이더넷에서는 보통 1,500바이트 * MSS(Maximum Segment Size) - 헤더를 제외하고 한 개의 패킷으로 운반할 수 있는 TCP의 데이터의 최대 길이 FCS데이터TCP 헤더IP 헤더MAC 헤더 이부분의 최대 길이가 MTU (이더넷에서는 1,500바이트)
  • 8. 데이터를 송・수신 한다! • 애플리케이션에서 받은 데이터가 MSS를 초과하거나 MSS에 가까운 길이에 이르기까지 데이터를 저장한 후 송신 동작을 수행. ➥ 패킷이 잘게 나누어질 걱정을 할 필요가 없다. • MSS에 가깝게 데이터를 저장하면 시간이 걸려 송신 동작이 지연. ➥ 일정 시간 이상 경과하면 패킷을 송신한다. (프로토콜 스택의 내부 타이머에 의한 동작)  이에 대해 TCP/IP 프로토콜 사양에는 절충에 관한 규정은 없다 ! (개발자 마음대로^^)
  • 10. HTML 헤더 메시지 본문 애플리케이션의 데이터 조각2TCP 조각2TCPIPMAC 조각1TCP 조각1TCPIPMAC TCP가 조각으로 분할하여 헤더 부가 IP 헤더 부가 ….. ….. 패킷 진행 방향 MSS의 크기 MTU의 크기 * MSS : Maximum Segment Size * MTU : Maximum Transmission Unit  클 때는 나누는게 최고!
  • 11. ACK라는 것이 있지요!  ACK는 송신측에 대하여 수신측에서 긍정 응답으로 보내지는 전송 제어용 캐릭터  ACK 번호를 사용하여 패킷이 도착했는지 확인한다. → 송신한 패킷이 제대로 도착하지 않았으면 재송신을 요구해요. [acknowledge]
  • 12. 시퀀스 번호 : 1, 크기 : 1,460바이트 ACK 번호 : 1,461 시퀀스 번호 : 1,461, 크기 : 1,460바이트 ACK 번호 : 2,921 시퀀스 번호 : 2,921, 크기 : 1,460바이트 ACK 번호 : 4,381 송신측 수신측 데 이 터 분 할 이 값을 시퀀스 번호로 설정 맨 앞부터 세어 1번째 바이트 맨 앞부터 세어 1,461번째 바이트 맨 앞부터 세어 2,921번째 바이트 애플리케이션 데이터 데 이 터 조 립 이 값에 1을 더한 값을 ACK 번호로 설정 1,460번째 바이트 까지 수신 완료 2,920번째 바이트 까지 수신 완료 4,380번째 바이트 까지 수신 완료 수신 확인 응답 실제로 시퀀스 번호는 난수를 바탕으로 산출한 초기값으로 시작한다. (악성 공격 예방)
  • 13. 그런데, 왜!! 클라이언트에서 서버로만 데이터를 보내나요?  데이터의 흐름을 하나만 고려했기 때문! TCP의 데이터 송・수신 동작은 양방향이므로, 여기에 대응해야 한다.
  • 14. 서버 클라이언트 클라이언트측의 시퀀스 번호 초기값 서버측의 시퀀스 번호 초기값 클라이언트측 시퀀스 번호 서버측의 ACK 번호 서버측의 시퀀스 번호 클라이언트측의 ACK 번호 …..….. 서버에서 클라이언트에게 보내는 데이터 클라이언트에서 서버에 보내는 데이터 클라이언트에서 서버에 도착한 데이터 서버에서 클라이언트에 도착한 데이터 ….. ….. ….. …..
  • 15. 서버 클라이언트 시퀀스 번호 + 데이터 ACK 번호 시퀀스 번호 + 데이터 ACK 번호 ...... 송・수신 동작 시퀀스 번호 초기값 ACK 번호 접속 동작 ACK 번호 시퀀스 번호 초기값 : 클라이언트에서 서버에 보내는 데이터에 관한 것 : 서버에서 클라이언트에 보내는 데이터에 관한 것
  • 16. ACK번호의 대기시간? 대기 시간은 너무 짧지도, 길지도 않은 적절한(?) 값이어야 한다.  TCP는 대기 시간을 동적으로 변경.  ACK 번호가 돌아오는 시간을 기준으로 대기시간을 판단한다.
  • 17. ACK번호가 늦게 오면 마냥 기다려야 돼요??  윈도우 제어 방식에 따라 효율적으로 ACK 번호를 관리한다. ➥ 한 개의 패킷을 보낸 후 ACK 번호를 기다리지 않고 차례대로 연속해서 복수의 패킷을 보내는 방법
  • 18. (a) 핑퐁 방식 (b) 윈도우 제어 방식 서버 클라이언트 ACK 번호를 기다리는 시간이 낭비됨 서버 클라이언트 ACK 번호를 기다리는 사이 다음 송신을 하므로 낭비가 없음 시간의 경과 시간의 경과
  • 19. 능력의 한계;;를 느낄 때! 1. 수신측 TCP는 패킷을 수신하면 수신용 버퍼 메모리에 일시 보관. 2. 수신측에서 ACK 번호를 계산하여 조각 데이터를 복원후 애플리케이션에 전달. 3. 처리가 끝나지 않았을 때 도착한 데이터는 버퍼에 일시 보관. if (애플리케이션에 건네주는 속도 < 데이터 도착 속도) { 응 ?? }
  • 20. 수신측 송신측 4380 2920 1460 0 1460 02920 빈 영역이 0이 되면 송신 중지 보낸 데이터만큼 빈 영역에서 뺌 수신용 메모리의 빈 영역 데이터를 2,920 바이트만큼 추출 수신측 프로그램 수신용 메모리 영역 (4,380바이트) 알려줌 다시 알려줌
  • 21. TCP vs UDP 이후의 소켓 말소, IP와 이더넷의 패킷 송・수신에 대한 설명은 생략~ ^^
  • 22. に UDP TCP 중개 외엔 아무것도 안해 아직 도착 안했어 다시 한번 보내줘 데이터를 확실히 송・수신 송・수신 속도를 조절 Fig1. http://goo.gl/9Eeid0 UDP : User Diagram Protocol DNS 서버에 대한 조회 등에서 짧은 제어용 데이터를 송・수신할 경우 음성이나 동영상 데이터를 수신할 경우 TCP : Transmission Control Protocol 브라우저나 메일 등의 일반적인 애플리케이션이 데이터를 송・수신할 경우
  • 23. 이제 TCP, 믿을 수 있겠죠? [Reference] [1] “성공과 실패를 결정하는 1%의 네트워크 원리”, Tsutomu Tone, 성안당. [2] “윤성우의 열혈 TCP/IP 소켓 프로그래밍”, 윤성우, 오렌지미디어. [3] “뇌를 자극하는 TCP/IP 소켓 프로그래밍”, 윤상배, 한빛미디어. [4] http://itpro.nikkeibp.co.jp/article/lecture/20070305/263897/