0%

TCP와 UDP의 특징과 차이

image

TCP(Transmission Control Protocol)란?

인터넷상에서 데이터를 메시지의 형태로 보내기위해 IP와 함께 사용하는 프로토콜

일반적으로 TCP와 IP를 함께 사용하는데, IP가 데이터의 배달을 처리한다면 TCP는 패킷을 추적 및 관리하게 됩니다. 연결형 서비스를 지원하는 프로토콜로 인터넷 환경에서 기본으로 사용합니다.

TCP 특징

  • 연결형 프로토콜
  • 3-way handshacking과정을 통해 연결을 설정, 4-way handshaking을 통해 해제
  • 흐름 제어 및 혼잡 제어
  • 높은 신뢰성을 보장
  • UDP보다 속도가 느림

TCP가 가상 회선 방식을 제공한다는 것은 발신지와 수신지를 연결하여 패킷을 전송하기 위한 논리적 경로를 배정한다는 뜻입니다. 3-way handshacking과정은 목적지와 수신지를 확실히하여 정확한 전송을 보장하기 위해서 세션을 수립하는 과정을 의미합니다. TCP는 연결형 서비스로 신뢰성을 보장하기 떄문에 3-way handshacking의 과정도 사용하는 것이고, 데이터의 흐름제어나 혼잡제어와 같은 기능도 합니다. 이러한 기능때문에 UDP보다 속도가 느리게 됩니다.TCP는 연속성보다 신뢰성있는 전송이 중요할 때에 사용하는 프로토콜입니다.

Read more »

TCP/IP

인터넷상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜

TCP는 데이터 전달을 관리하는 규칙입니다. 즉, 데이터를 작게 나눠서 한쪽에서 다른쪽으로 옮기고, 이를 다시 조립하여 원래의 데이터로 만드는 규칙입니다. 여기서 잘게 나누 데이터 단위를 패킷이라고 합니다.인터넷에서는 정보를 전달하는 단위를 뜻합니다.TCP는 패킷을 조립하고, 손실된 패킷을 확인하고,재전송하도록 요청하는 기능을 합니다.

IP는 인터넷상의 주소 규칙입니다. 집의 주소를 부여하는 규칙이 존재하듯이, 인터넷상에 연결된 모든 컴퓨터의 위치에도 규칙이 필요합니다.

Read more »

좌표 정렬하기

python의 기본 정렬 라이브러리는 기본적으로 튜플의 인덱스 순서대로 오름차순 정렬한다는 것에 대해서 정리하려고 합니다.

백준알고리즘의 11650문제를 풀며 위의 내용에 대해서 정리하려고 합니다.

image

Read more »

numpy모듈

python언어의 확장 패키지이며, 대규모의 다차원 배열 및 행렬을 지원한다.또한 배열 연산에 쓰이는 수학 함수 라이브러리를 제공합니다.

넘파이 배열은 임원의 차원을 가집니다. 넘파이 모듈의 array메서드를 사용하여 ‘시퀀스의 시퀀스(리스트 또는 튜플)’를 2차원 배열로 생성할 수 있습니다.

아래는 numpy모듈의 간단한 사용 예제입니다.

Read more »

OSI 7 Layer(계층)

  • 다양한 컴퓨터간 데이터 전송을 지원할 수 있는 추상 모델을 표준화한 것 / 국제표준화기구에서 OSI 모델 제정
  • OSI 7 layer 또는 OSI계층으로 불리움

image-20200531184042164

Read more »

해시

데이터를 다루는 기법중에 하나로 검색과 저장이 아주 빠름

해시가 아주 빠르게 진행될 수 있는 이유는 데이터를 검색할 때 사용할 key와 실제 데이터의 값(value)이 한 쌍으로 존재하고, key값이 배열의 인덱스로 변환되기 때문에 검색과 저장의 평균적인 시간 복잡도가 O(1)에 수렴하게 됩니다.

ex) hello라는 문자열을 정수형 key값으로 바꾼다면, h+e+l+l+o -> 104+101+108+108+111=532라는 해시코드로 변환 할 수 있습니다.

백준알고리즘의 10930문제를 풀다가 hash에 대한 개념이 부족하여 간단하게 정리 후 알고리즘을 풀어봤습니다.

Read more »

조건문과 반복문

조건문과 반복문이 반복되면 가독성이 떨어지고, 실수할 상황이 발생합니다.이런 문제를 해결하기 위해 조건문과 반복문에서 할 수 있는 몇 가지 팁을 공유합니다.

조건문

함수의 설계에서 조건문은 다음과 같은 방법으로 쓸 수 있습니다.

1
def process():
2
  if state :
3
    return True
4
  else :
5
    return False

이 방식을 다르게 쓰면 다음과 같습니다.

Read more »

프로세스(process)란?

실행중인 프로그램은 프로세스라고 함, 메모리에 올려져서 실행중인 프로그램

코드 이미지(바이너리): 실행 파일

응용 프로그램 != 프로세스

응용 프로그램은 여러 프로세스로 구성 가능

프로세스 스케쥴링

배치 처리 시스템

여러 프로그램을 순차적으로 실행시킬 수 있도록 / 어떤 프로그램은 실행이 너무 오래 걸려서, 다른 프로그램이 실행하는데 시간을 많이 기다려야 함

Read more »

Django form Login

1. 로그인 예외처리

1
<form.py>
2
class LoginForm(forms.Form):
3
    username = forms.CharField(
4
        error_messages={
5
            'required': '아이디를 입력해주세요.'
6
        },
7
        max_length=32, label="사용자이름"
8
    )
9
    password = forms.CharField(
10
        error_messages={
11
            'required': '비밀번호를 입력해주세요.'
12
        },
13
        widget=forms.PasswordInput, label='비밀번호'
14
    )
15
16
    def clean(self):
17
        cleaned_data = super().clean()
18
        username = cleaned_data.get('username')
19
        password = cleaned_data.get('password')
20
21
        if username and password:
22
            try:																					#1
23
                user = User.objects.get(username=username)
24
                if not check_password(password, user.password):
25
                    self.add_error('password', '비밀번호를 틀렸습니다.')
26
                else:
27
                    self.user_id = user.id
28
            except Exception:															#2
29
                self.add_error('username', '존재하지 않는 아이디입니다.')

1) 예외가 발생할 수 있는 문장입니다.

Read more »

임계영역(Critical Section)

임계 영역(Critical Section)과 크리티컬 섹션(임계 영역)

  • 임계영역관 크리티컬 섹션은 똑같은 말이다.같은 말을 두번 반복하는 이유는 하나의 표현이 두 가지 의미로 사용되기 때문이다.
Read more »